文件上传漏洞靶场通关
#前言:记录一下学习。所用到的靶场在github上.
pass–01
通过观察发现这个源码是前端代码,而前端进行文件检测等于没有检测,我们进行抓包更改为php文件即可。 |
function checkFile() { |
用蚁剑进行连接 |
pass–02
观察源码发现这个代码只对文件上传类型进行了限制,我们仍然可以抓包修改jpg 为php 文件 |
$is_upload = false; |
进行连接 |
pass–03
这次对文件的上传进行了后缀的限制,可以看出这是个黑名单--不允许上传给出的文件后缀名. 将1.php名字改为1.php4(php1,php2,php3,php4,php5),phtml, |
$is_upload = false; |
pass–04
通过源码可以看到对文件后缀进行了全面封杀。这时可以用到.htaccess 文件对上传的jpg 文件都解析为php文件 |
$is_upload = false; |
AddType 指令可以将给定的文件扩展名映射到指定的内容类型。 将jpg文件解析为php文件。 去网上查了一下 在进行上述实战时,不要使用新版本的phpstudy,新版本的phpstudy对.htaccess支持存在问题,推荐使用2018版本的phpstudy。 |
pass–05
根据源码 可以看出只对文件后缀名进行了处理。去掉了文件名末尾的点,取了点后面的后缀名。并进行了小写转换。在和数组里面的后缀名匹配如果出现一样的不允许上传,根据这个我们可以使用1.php. . 先去掉末尾的点只剩下1.php. 他再取.后面的值只有空格。最后只剩下1.php. 便绕过了他的检测机制。 |
$is_upload = false; |
pass–06
这个代码居然把转换小写功能去掉了,这样我们可以用大小写来绕过检测。 |
$is_upload = false; |
pass–07
可以拿下题代码跟上题代码进行比较看缺了什么 就对什么进行突破,很明显首尾去空被弄掉了,那就是这题的突破口 |
$is_upload = false; |
pass–08
代码没有首先去掉末尾的点,而先取的最后一个点后面的内容,如我们上传一个1.php. 他就会取点后面的内容在进行小写转换,绕过了黑名单检测 |
$is_upload = false; |
pass–09
观察源代码发现, 删除了 $data ,根据这个我们可以利用。 |
$is_upload = false; |
再去访问php不要::$data |
我们可以去根目录查看这个文件发现他默认就是1.php |
pass–10
还是使用. .进行绕过 |
$is_upload = false; |
pass–11
这个代码str_ireplace函数我们可以利用双写去绕过 |
$is_upload = false; |
pass–12
第12关和之前的关不同是白名单的上传机制,只允许上传的他指定的文件。但12用到的技巧就是00截断。这个只适用于PHP5.3.4之前的版本.且 |
$is_upload = false; |
我们直接删除多余的,访问1.php |
pass–13
这个和上一个比较,请求方式发生了变化成了post请求。但原理还是一样的 |
$is_upload = false; |
可以在php后面写写一个a 转成16进制就是61 在改成00就可以了。00是显示不出来的。 |
pass–14
第14关用到的是图片马,制作一个图片马先 |
可以看到这两个图片并没有差别 |
用16进制查看可以看到我们写的php 一句话木马 |
这个上传会出现问题,应该是文件太大了。建议使用大小较小的图片 |
进行上传,配合文件包含漏洞查看图片木马是否成功,至于文件包含漏洞就是一个文件里面包含了多个文件。可以查看这个文件里面的文件 |
图片地址 |
进行传参查看图片 |
pass–15
和14关一样使用图片马即可。 getimagesize函数 会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的 |
function isImage($filename){ |
pass–16
exif_imagetype() 读取一个图像的第一个字节并检查其签名。 也只是检查第一个字节。 做本关之前需要开启php exif 模块. 因为这个函数是这个模块内置的。 |
function isImage($filename){ |
图片马上传,使用文件包含漏洞地址进行文件读取。 |
pass–17
图片二次渲染,简单说就是上传一张图片后他在渲染一次,相当于照着图片重新画了一次。对于二次渲染绕过使用gif格式比较简单,找第二次渲染没有改变的位置,建议第四行插入php木马。二次渲染函数:imagecreatefromjpeg |
$is_upload = false; |
我们可以用之前的方法把一句话木马加入到图片里面,再看渲染后的样子. |
末尾的一句话木马已经没有了 |
蓝色部分就是二次渲染之后没有改变的值 |
在第5行中插入木马 |
进行上传,使用文件包含漏洞访问图片,查看是否成功 |
pass–18
第18关用到的是条件竞争,根据源码是先上传后检测文件,再重命名。条件竞争原理就是我们只要一直上传超过他删除文件的速度,就可以绕过了。 |
$is_upload = false; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 废柴の博客!
评论
匿名评论