Bootstrap

文件上传漏洞详解

第一关

步骤一,打开第一关先点击浏览上传一个jpg格式的图片

8588e3ee6fa4425cbd4b15ac1bb19779.png

c45ff1d0f4e94c7cb8aad8bf660b30d1.png

步骤二,打开BP修改jpg为php然后放包

398fa26806094f8596f68af2c6901665.png

d461d21801314095ac6cb7a596dbc184.png

步骤三,右键打开图像

成功解析

b4e62cd90c9946798dfc1032e4e539ac.png

步骤四,打开蚁剑

bf842213d6a648fea46e87f34352cde8.png

48f2c3dd301e4958a553e66ea882c0d1.png

第一关还是蛮简单的

第二关

步骤一,打开第二关先点击浏览上传一个jpg格式的图片

12d596b7f00f415a8fe8d321091bcc5a.png

步骤二,打开BP修改jpg为php然后放包

步骤三,右键打开图像

步骤四,打开蚁剑

一二关步骤一样...

第三关

步骤一,我们尝试看看能不能上传1.php

我们获得提示:不允许上传.asp,.aspx,.php,.jsp后缀文件!

6294ba9b7efa4f86b91c06e7fc002bc7.png

步骤二,我们尝试改一下文件名称后面加个数字1.php5

dc73fe39fb2d402db14065eed5c1c4d9.png

步骤三,右键打开图像

成功解析

fde99ca08b7446d1a90c000cfb491937.png

第四关

环境不行得需要在fofa找一个靶场

编写.htaccess文件,内容解释:将1.jpg文件解析成php文件
<FilesMatch "1.jpg">
SetHandler application/x-httpd-php

</FilesMatch>

步骤一,上传.htaccess文件

3aebd7460b4b4599af14301a919458d3.png

步骤二,在上传一个1.jpg

dfa2782ac2be42789ef1344ede52b6d5.png

步骤三,右键打开图像

成功解析

be68177b6dbb44f7905f04bfd8ce68ab.png

第五关

文件包含操作
auto_prepend_file ="x.jpg"表示加载第一个PHP代码之前执行指示(包含的)文件

步骤一,上传.htaccess文件.user.ini文件内容

134d453b5f6c43fdbc7227e7123aaebd.png

步骤二,在上传一个1.jpg

a459ccd4174f40b8adddeb34bbbda697.png

步骤三,访问readme.php文件

eaf4299859b040b6bb8899cd164f960f.png

第六关

步骤一,使用大小写绕过

af2d1e481c474b59ab3c408548f42f27.png

步骤二,右键打开图像

成功解析

791a92351c0644278ff7c7fa2b77974a.png

第七关

步骤一,打开BP1.php后面加个空格

65c1531fd928424bbedeb40e439d8453.png

fd958450d1b94894a7589070e8d3f401.png

步骤二,右键打开图像

成功解析

8445dc7b7a414ca3b6855707d438a8ae.png

第八关

步骤一,打开BP在文件名称后面加个'.'

78c4625b688c4fdf8b42da7cb849ef1b.png

步骤二,右键打开图像

成功解析

6e324f9ddce24a76aa4edc53946ab62b.png

第九关

步骤一,打开BP在文件名称后面加个'::$DATA'

c11248642eed4ad682bcfe669017f7df.png

e5dbf70468a442d0a70d78d5af0b963e.png

步骤二,右键打开图像

成功解析

2d08ab9d59df4005894a4c92973952a0.png

第十关

步骤一,打开BPphp后面加上'. .'

2eebba402ce44d52adac9bfe876ae149.png

f8706f5761c94436a73ecb6e34424c81.png

步骤二,右键打开图像

成功解析

c1dc966918d0409dbb1ecf9afbecd606.png

第十一关

双写后缀名绕过

步骤一,点击浏览上传php文件

62536c8aab0e42b292e62622be3594fc.png

步骤二,右键打开图像

成功解析

66df2f36c43145be88f2b72caf76aaf6.png

第十二关

步骤一,打开BP

在第一行添加xxx.php%00

把php改为jpg

3df32e2d4f104a85ba6719db953a68c1.png

步骤二,右键打开图像

删掉php后面的东西

0ffddff2584f4a84b46f6afe6f30511c.png

成功解析

fe2e68cff4534315a3d971c652189e41.png

第十三关

这段代码同样是⽩名单限制后缀名,$_POST['save_path']是接收客户端提交的值,客户端可任意修改。所以会产⽣安全漏洞;
POST 下直接注⼊%00 是不⾏的,需要把%00 解码变成空⽩符,截断才有效。才能把⽬录截断成⽂件名;

步骤一,打开BP

添加xxx.php (空格)

把php改为jpg

c9b7ca5d289048d59b854ac6727be790.jpeg

将%00的hex码更改为00,然后上传

8ecfb678d2d048ef89b08e76b556396a.png

步骤二,右键打开图像

删掉php后面的东西

c7446ee882d240bb8d1e0c8bcb30894b.png

成功解析

03f5a0889c6841c3ba5d45986d4e67a9.png

第十四关

⽂件头代表了⽂件是那种类型,我们上传的⽂件内容如果是只有php代码,那么程序在对我们的⽂件头部进⾏检查时,如果发现没有允许上传⽂件类型的⽂件头,就会对我们上传⽂件进⾏拦截。

步骤一,制作图⽚⼀句话,使⽤copy a.jpg/b+1.php/a shell.jpg将 php ⽂件附加在 jpg 图⽚上,直接上传即可;
/b代表以⼆进制编码打开⽂件,/a代表以ASCII码编码打开⽂件

步骤二,上传shell.jpg,图片右键新建标签页打开图片,打开文件包含漏洞,用file读取图片地址

第十五关

步骤一,上传shell.jpg,图片右键新建标签页打开图片,打开文件包含漏洞,用file读取图片地址

第十六关

环境不支持

第十七关

步骤一:我们找到php ⽬录 执⾏ php 1.php 就会给我们⽣成⼀个1.png⽂件

步骤二,图片需要二次渲染,上传图片,图片右键新建标签页打开图片,打开文件包含漏洞,用file读取图片地址

步骤三,复制地址去蚁剑连接

第十八关

步骤一,php文件输入<?php fputs(fopen('webshell.php','w'),'<?php @eval($_POST["cmd"])?>');?>

步骤二,上传文件,burp抓包,发送到 intruder 模块,设置⽆限发送空的payloads,无限重复;

步骤三,访问1.php抓包,发送到 intruder 模块,设置⽆限发送空的payloads,无限重复;

步骤四,同时攻击,直到出现webshell.php

步骤五,使用蚁剑连接

第二十关

步骤一,上传php文件,保存名称改为1.php/.

步骤二,图片右键新建标签页打开图片

;