目录
post 下直接注入%00 是不行的,需要把%00 编码变成空白符,截断才有效,才能把目录截断成文件名。改完然后放行。
本关会读取判断上传文件的前两个字节,判断上传文件类型,并且后端会根据判断得到的文件类型重命名上传文件
首先判断图片是否允许上传 gif,gif 图片在二次渲染后,与原图片差别不会太大。 所以二次渲染攻击最好用 gif 图片 图片马;
Pass-11 目录可控%00 截断绕过上传(GET)
代码中使用白名单限制上传的文件后缀名,只允许指定的图片格式。但是$_GET['save_path']服务器接受 客户端的值,这个值可被客户端修改。所以会留下安全问题;
文件上传参数目录可控攻击
上传参数可控
-
- 当 gpc 关闭的情况下,可以用%00 对目录或者文件名进行截断;
- php 版本小于 5.3.4 ;
注意:需要magic_quotes_gpc=off,才可以
首先截断攻击,抓包上传将%00 自动截断后门内容
例如 1.php%00.1.jpg 变成 1.php
显然我们直接上传1.php是不行的,告诉我们只允许上传.jpg|.png|.gif类型文件!
所以我们把1.php文件改为1.jpg,然后进行截断攻击,抓包上传将%00 自动截断后门内容。
例如 1.php%00.1.jpg 变成 1.php
此时发现我们的1.jpg文件上传成功变为1.php文件,然后访问1.php。
访问成功!
Pass-12目录可控%00 截断绕过上传(POST)
我们还是先上传jpg文件,然后进行抓包,
post 下直接注入%00 是不行的,需要把%00 编码变成空白符,截断才有效,才能把目录截断成文件名。改完然后放行。
没有报错,上传成功!
然后访问1.php。
Pass-13 文件头检测绕过上传
getReailFileType 是检测 jpg、png、gif 的文件头;
本关会读取判断上传文件的前两个字节,判断上传文件类型,并且后端会根据判断得到的文件类型重命名上传文件
使用 图片马 + 文件包含 绕过,所以我们准备两个文件。
我们先将include.php放到upload-labs下,然后我们访问一下文件
我们上传php.php.php.jpg文件,上传成功,右键打开新建标签页打开图像,复制路径。
然后我们在刚刚访问的include.php后拼接:
?file=upload//7320240726200254.gif
复制整个链接利用工具连接,这里我使用的工具是中国菜刀,没有可以私信我。
http://127.0.0.1/upload-labs/include.php?file=upload//
连接成功
Pass-14
同13关一样,上传文件拼接链接,工具连接
Pass-15攻击方法同13,14一样
Pass-16 绕过图片二次渲染攻击
首先判断图片是否允许上传 gif,gif 图片在二次渲染后,与原图片差别不会太大。 所以二次渲染攻击最好用 gif 图片 图片马;
这关我们需要准备一个一下文件,需要的可以私信我。
我们直接上传该文件,可以看到上传成功。
以下步骤和13关一样不细说了,跟着图做吧。
Pass-17 文件上传条件竞争漏洞绕过
在文件上传时,如果逻辑不对,会造成很大危害,例如文件上传时,用 move_uploaded_file 把上传的临时文件移动到指定目录,接着再用 rename 文件,设置图片格式,如果在 rename 之前 move_uploaded_file 这个步骤 如果这个文件可被客户端访问,这样我们也可以获取一个 webshell;
我们首先创建一个1.php作为上传文件,里面内容如下:
<?php @fputs(fopen('123.php',w),'<?php phpinfo();?>');?>
因为我们正常上传文件会直接被删,这里我就不演示了。我们直接上传文件,burp抓包,发送到 intruder 模块,设置无限发送空的payloads,线程调高一点;
开始攻击,然后我们访问我们的1.php,疯狂刷新页面。页面显示Access denied代表123.php上传上去了。
成功访问123.php
Pass-18
和13一样一样的,上传个图片即可
然后还是用工具连接。
Pass-19 文件名可控绕过上传
文件上传时,文件名可被客户端修改控制,会导致漏洞产生;
访问成功!
需要工具或者有任何问题私信我。
Meet.meet