RCE
远程代码执行:Remote Code Execute
远程命令执行:Remote Command Execute
php RCE函数
命令拼接符号
windows
linux
pikachu靶场练习
ping
直接在ip后&加命令
eval
用system(‘ipconfig’)或者phpinfo()测试
DVWA的RCE
low
跟pikachu一样直接加&
medium
因为平台是Windows,而靶场过滤的是Linux连接符,所以跟上面一样
high
查看源码管道符|后有空格
我们不加空格直接拼接
ctfhub练习
eval执行
蚁剑连接,右键打开终端
然后ls /根目录下就有flag
命令注入-无过滤
要求输入ip,没有过滤
直接输入127.0.0.1;ls查看目录下文件
有一个php文件,cat查看没东西
直接转base64编码
|
|
然后解码得到flag
命令注入-过滤cat
改为less就行了
其他命令
|
|
命令注入-过滤空格
|
|
命令注入-过滤命令分隔符
cd跳目录再cat,或者%0a代替目录分隔符/(在url里面输入)
过滤运算符
其实前面要base64是因为源码被注释了
所以我们正常cat flag然后查看源码
综合过滤
flag过滤用f***绕过
cat改为more
;用%0a
然后跟上面一样构造payload到url里面
|
|
防御
1、尽量不要使用命令执行的函数
2、如果必须使用,需要做白名单处理
3、用正则表达式对用户输入的内容进行处理
4、使用WAF