Upload-labs 第12 - 21关 通过笔记

第12关
上传文件,发现只能上传 png jpg 等
为白名单检测,post
使用 %00 截断法
上传 .php 文件
抓包,在sava_path 后面加上 .php%00
file_name 后缀 改成 png/jpg 白名单允许的后缀
上传发现成功
复制图像链接,把.php 后面内容全删了
就是.php 的链接
用 蚁剑 成功连接


第13关
查看源码,发现白名单检测,post
试试 %00 方法
上传 .php 文件
抓包,发现save_path 在post处,意味着要url编码
编码后,吧file_name 改成 jpg/png/gif 后缀
上传成功、
用 蚁剑 成功连接

第14关
点击提示,说只检测2个字节
我们用 gif 的试试
在 .php 文件的内容前面加上 GIF 89A
再上传,上传成功
题目又说有文件上传漏洞
试试 include.php ,果然,服务器有这个文件
提示 file 的get 型
访问 include.php?file=upload/gif文件名
成功解析

第15关
点击提示,发现用了getimagesize()函数
这个函数是解析文件的头字节
那么就上传14关的加了GIF 89A的文件
再访问include.php?file=upload/gif文件名
成功

第16关
点击提示,发现用了exif_imagetype()函数
这个函数也是解析文件的头字节
那么就上传14关的加了GIF 89A的文件
再访问include.php?file=upload/gif文件名
成功

第17关
二次渲染
意思就是,上传图片后,会有个缩略图,可以保存删除的
这边就可能涉及二次渲染
这个就需要对比他二次渲染后的图片和原来图片的hex编码
看出哪里没改,然后再那里写入一句话
就可以绕过了,用脚本来


第18关
分析源码,发现他是上传文件到服务器后,再进行后缀名的判断
存在 条件竞争
那么就不断上传php文件,然后浏览器不断访问文件链接,
如果访问到了,他判断后缀名就不会发生
成功通过

第19关
思路:
上传 .php.7z,抓包
用burp不断上传,浏览器访问 upload/.php.7z
apache的解析漏洞为将 .php.* 当成 php 执行
也是条件竞争,不过成功率很低。。


第20关
提示我们保存名称可以改?
试试上传一个php文件,被保存名称解析成了jpg文件
试试改保存名称,没用,看源码
发现黑名单,试试保存名称改成 .phP,成功绕过

第21关
通过代码审计
以 . 为分界,弄成数组
数据[0]就是文件名
数据[2]就是后缀
抓包,修改


-----------------------------221390815126978473834183552440
Content-Disposition: form-data; name="save_name[0]"

upload-20.php/
-----------------------------221390815126978473834183552440
Content-Disposition: form-data; name="save_name[2]"

png
-----------------------------221390815126978473834183552440
Content-Disposition: form-data; name="submit"

上传
-----------------------------221390815126978473834183552440--

此时数据[1] 为空
此时就变成了
数据[0] + . + 数据[1]
就是:
upload-20.php/.
又 /. 不会被解析
成功绕过

你可能感兴趣的:(php,安全,web安全)