upload-labs 通关笔记
注入脑图
如何区分白名单和黑名单
假设上传图片text.jpg,用burpsuite抓包,将文件名改为text.jpgaaaa。如果上传成功,那么是黑名单限制,否侧是白名单限制。
.htaccess文件创建
创建无命名文件方法:如何创建.htaccess结尾的无文件名的文件_百度经验
.htaccess文件内容:
<FilesMatch "waf" >
SetHandler application/x-httpd-php
</FilesMatch>
upload-labs-master 闯关详解
--- 1-10为黑名单注入
waf.php文件内容
<?php phpinfo(); ?>
第一关
直接上传waf.php文件,直接提示上传失败,用burpsuite抓包,显示为空,证明是前端验证 。
上传waf.jpg文件,用burpsuite抓包 改为 waf.php ,绕过成功。
第二关
查看源代码
if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))
只对content-type进行了判断,上传waf.php,抓包将content-type改为image/gif ,成功绕过。
第三关
查看源码
可以使用特殊文件名绕过:将waf.php 抓包改为 waf.php3进行绕过。
绕过方法:
(1)找黑名单扩展名的漏网之鱼 - 比如 asa 和 cer 之类
(2)可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类
能被解析的文件扩展名列表:
jsp jspx jspf
asp asa cer aspx
php2, php3, php4, php5,phps, pht, phtm, phtml
exe exee
第四关
参考 .htaccess文件的创建
上传 .htaccess文件后 再上传 waf.jpg文件,成功绕过。
第五关
文件后缀名大小写绕过
第六关
抓包在文件后缀名后加空格绕过
第七关
抓包在文件后缀名后加‘.’绕过
第八关
利用windows特性绕过,windows会自动过滤不合法的文件名,比如:
1)上传不符合windows文件命名规则的文件名
test.asp.
test.asp(空格)
test.php:1.jpg
test.php::$DATA
shell.php::$DATA…….
会被windows系统自动去掉不符合规则符号后面的内容。
(2)linux下后缀名大小写
在linux下,如果上传php不被解析,可以试试上传pHp后缀的文件名
第九关
这道关卡做了充分的拦截。
$img_path=UPLOAD_PATH.'/'.$file_name
由于直接拼接文件名,造成漏洞。
于是构造waf.php. . (点+空格+点),经过处理后,文件名变成info.php.,即可绕过。
第十关
重写后缀名绕过 waf.pphphp绕过。
第十关之后为白名单过滤
第十一关(00截断GET方式)
看到是白名单判断,但是$img_path直接拼接,因此可以利用%00截断绕过:
ps:%00截断条件
php版本小于5.3.4详情关注CVE-2006-7243
php的magic_quotes_gpc为OFF状态
第十二关(00截断POST方式)
Upload-labs文件上传(11-19) - tdcoming'blog - CSDN博客
图片马的制作:
copy normal.jpg /b + shell.php /a webshell.jpg
图片一句话木马简单制作方法 - TimeOldman的博客 - CSDN博客
分享文章: 服务器解析漏洞 | nMask's Blog