upload靶场通关

张开发
2026/4/11 7:38:06 15 分钟阅读

分享文章

upload靶场通关
本文是upload靶场1-13关的通关文章我将我通关时的解题思路和答案分享给大家第一关观察源码发现只是一个简易的前端验证使用burpsuite抓包进行前端绕过提示本pass在客户端使用js对不合法图片进行检查上传一个带有一句话木马的png格式图片?phpeval($_POST[1]);phpinfo();?抓包后将1.png改为1.php发现文件上传成功查看上传文件发现phpinfo正常显示用蚁剑连接成功后续关卡不再测试蚁剑若php页面正常显示则上传成功第二关观察源码,发现是MIME类型验证提示本pass在服务端对数据包的MIME进行检查首先上传1.png图片?phpeval($_POST[1]);phpinfo();?修改Content-Type为图片类型image/png同理修改为1.php发现上传成功查看上传文件发现phpinfo正常显示第三关观察源码发现给php设置了黑名单提示本pass禁止上传.asp|.aspx|.php|.jsp后缀文件在apache上的httpd.conf文件下添加代码AddType application/x-httpd-php .php .phtml .php3 .php4该句代码的意思是将.php、.php3、.php4当作php文件修改后记得重启apache继续上传1.png图片?phpeval($_POST[1]);phpinfo();?用前两关的方法修改png为php格式发现上传失败修改php为php4再次上传上传成功发现1.php4没找到路径在上传文件查找发现文件给改名为当前时间1000-9999的随机数发现文件被命名为202603300916342951.php4发现php4被解析成功第四关观察源码发现给php文件都加入了黑名单考虑黑名单绕过提示本pass禁止上传.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf后缀文件上传一个.htaccess文件内容为Addtype application/x-httpd-php .png这句代码意思是把png后缀的文件当php文件解析上传1.png图片?phpeval($_POST[1]);phpinfo();?查看上传文件发现png图片解析成php黑名单绕过成功第五关观察源码发现给大多文件加了限制但是上传文件含有php文件(readme.php)提示上传目录存在php文件(readme.php)上传.user.ini文件,内容为auto_prepend_file1.png意思让服务器解析php文件之前自动把1.png文件包含进来进行上传1.png图片?phpeval($_POST[1]);phpinfo();?然后查看readme.php文件记得把apache切换成nts的版本第六关观察源码发现与上一关相比少了个转化大小写这次使用大小写来上传文件提示本pass禁止上传.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf|.htaccess后缀文件依旧先上传1.png图片?phpeval($_POST[1]);phpinfo();?将文件改为1.Php后上传成功查看上传文件看到上传成功第七关观察源码发现少了个首尾去空的限制那我们就可以使用空格绕过提示没有进行首尾去空继续上传图片1.png?phpeval($_POST[1]);phpinfo();?修改为1.php后面加个空格继续上传上传成功查看上传页面发现php页面正常显示绕过成功第八关观察源码发现少了个删除文件名后面的点的代码所以可以使用点来绕过提示本pass禁止上传所有可以解析的后缀先上传1.png图片?phpeval($_POST[1]);phpinfo();?修改成1.php.继续上传查看上传页面php页面正常显示上传成功第九关观察源码发现少了个缺少去除字符串::$DATA的代码使用::$DATA绕过提示缺少代码继续上传1.png图片?phpeval($_POST[1]);phpinfo();?修改成1.php并且后缀加上::$DATA继续上传查看上传页面发现页面正常显示上传成功第十关观察源码发现给前面几关的限制补充了所以这次使用较为常用的点空格点绕过提 示本pass只允许上传.jpg|.png|.gif后缀的文件先上传1.png图片?phpeval($_POST[1]);phpinfo();?修改为1.php. .记住后面有. .再次上传查看上传页面查看时不需要加. .windows系统会自动删除文件后缀的.和 发现页面正常显示第十一关观察源码发现代码给大量的文件后缀进行黑名单或许可以尝试双写绕过比如php后缀文件会被屏蔽为空但是pphphp被屏蔽后会变成p hp所以可以尝试提 示本pass会从文件名中去除.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf|.htaccess字符先上传1.png图片?phpeval($_POST[1]);phpinfo();?然后修改1.png变成1.pphphp再上传查看上传文件看看后缀有没有被屏蔽页面正常显示所以双写绕过可行第十二关观察源码发现代码给路径设置成GET参数可以使用%00截断将上传的图片保存为php文件提示本pass上传路径可控本关需要php版本小于5.3并且关闭Magic_quotes_gpc先上传1.png图片?phpeval($_POST[1]);phpinfo();?修改最顶上的post为POST /upload-labs/Pass-12/index.php?save_path../upload/1.php%00 HTTP/1.1保持上传文件不变再提交查看上传页面发现页面正常显示上传成功第十三关观察源码发现与上一关非常相似唯一不同点是将save_path的参数设置为了POST方式所以这关的解题方法应该和上一关一样是%00截断提示本pass上传路径可控本关需要php版本小于5.3并且关闭Magic_quotes_gpc先上传1.png图片?phpeval($_POST[1]);phpinfo();?POST方式的hex不会自动解密所以放在URL上会被识别为普通字符所以要在save_path参数中设置为-----WebKitFormBoundaryBFn4NUoSECix1HJAContent-Disposition: form-data; namesave_path../upload/1.php使用burpsuite查看hex表将1.php后面的号的hex值设为00(就是图中这个2b)再上传发现上传成功查看上传页面发现页面正常显示上传成功

更多文章