目录
审题
点开链接
根据题目提示随便试试构造payload
inurl?ip=666
有返回,参数ip的值就是要ping的内容
这里我们知道有Windows和Linux通用的命令分隔符%0a、| 、& 、 ;
先试试看Windows特有的命令dir,使用分隔符|
构造payload , inurl?ip=127.0.0.1 | dir
emmm,好像是空格符被过滤掉了,把空格符删去再试试看
没反应,操作系统应该不是Windows了,输入命令ls,查看当前目录的文件
找到了放flag的文件,但是要打开该文件得用到命令cat flag.php , 必须绕过空格过滤
常用的空格绕过方法
不着急,先试着打开index.php查看过滤方法
使用命令cat$IFS$6index.php
接着查看网站源码
what's up 好多绕过的方法都被过滤了
解决方法
法一 拼接绕过法
这个方法主要是绕过对flag正则匹配的检测,有点悬,目前好像只能拼接末尾的g\ag\lag,我也不太清楚为啥
将lag替换成x,绕过对flag的正匹检测,构建payload
查看网站源码后得到flag
法二 内联执行法
可以看到代码没有过滤掉符号` , 所以可以利用内联执行的方式直接打开flag文件
先执行命令ls,再把ls得到的文件名全部用命令cat打开,构建payload
再查看源码后拿到flag
法三 sh编码绕过法
使用方法
echo 命令编码|base64 -d|sh
- sh可以换成bash , 但是题目过滤掉了
- 也可以换成其他的编码形式,这里用base64的
- 空格用$IFS$6替换掉
- cat flag.php 的base64编码为Y2F0IGZsYWcucGhw
构造payload , 相当于执行命令cat flag.php
再查看网站源码,拿到flag
参考文章: