1.前端校验
上传一个马 发现它校验文件类型
上传一个jpg文件看看上传功能是不是正常
还有上传文件保存的位置
那把后缀改成jpg burpsuite抓个包是不是就ok了
2.后端校验
上传个马直接抓包 看看响应包怎么个事儿
这个文本类型修改一下
看看这个上传成功没 发现没报错 下面这个图
拿蚁剑连一下试试
3.后缀名绕过 黑名单验证绕过
抓包改后缀
折磨看来是上传成功了 那就拿工具连一下这个
拿下了 就是上传后的🐎后缀名会变 但是不影响
4.黑名单验证,.htaccess
上传php🐎提示不允许上传
然后有一个文件.htaccess是没有过滤
再把php文件换成jpg 因为上面这个上传之后会把jpg按php传输出来
但是自己的环境不行 我找了个在线靶场
看了一下确实也传上去了
拿工具连shell
5.大小写绕过
6.空格绕过
看看源码
文件名字后面加一个空格 因为windows会默认没有空格 所以不能直接改 得抓包
7.小数点绕过
文件名字后面加一个小数点 因为windows会默认没有点 所以不能直接改 也得抓包
8.特殊字符绕过 ::$DATA
php在window的时候如果文件名+"::$DATA" windows会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名 确保不检查后缀名。
要注意的是使用工具链接的时候要把这部分删掉
9.. . 绕过
10.双写绕过...........
11.get %00截断 没出
需要修改
12.post %00截断
13.图片马
http://127.0.0.1/upload-labs/include.php/?file=./upload//8820240726201300.gif
14.getimagesize图片马
只做了图片的判断,并没有对我们图片马,进行限制。所以照样可以用之前的通关方法,进行getshell
15.exif_imagetype图片马
上传图片🐎 环境有问题
16.二次渲染绕过
看了这个提示之后 说明要二次渲染图片码绕过
17.条件竞争
通过分析,仅仅只是判断文件名称,和修改上传的文件名称,如果临时文件的后缀不在黑名单里面,就删除这个临时文件,那么这个临时文件在没有删除之前执行我们上传的代码块就可以解决这个问题
将一句话代码更改为如下内容。
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["shell"])?>');?>
使用Burp Suite连续重放PHP文件上传请求,同时用频繁访问该文件。在文件被删除前访问成功,即可在目录下创建一个包含一句话木马的php。
发送到Intruder模块 无限攻击
无限发送空的Payloads一直上传该文件
然后一直访问http://127.0.0.1/upload-labs/upload/HEI.php