upload-labs1-17思路

1

直接写一个php文件测试一下,发现弹窗不让上传

原理很简单,就是把后缀名拿出来过滤一遍,而白名单就是弹窗的这三个

解决方法:

因为这是在前端防御的一个手段,所以直接在浏览器设置上禁用js就行了:

也可以用bp抓包然后直接改后缀

2

这关检测的是文件类型,也就是content-Type

那就直接抓包改文件类型content-Type:image/jpeg就搞定了

3

这关过滤了.asp,.aspx,.php,.jsp后缀名

根据这道题的httpd.conf文件的AddType application/x-httpd-php .php .php3.phtml,php3自动解析成php,所以后缀名改成php3就行了,这关方法仅限这道题

4

利用.htaccess文件,一般适用于伪静态的,也可以控制网站根目录下的文件解析,所以我们创建一个htaccess文件,然后写入规则:AddType application/x-httpd-php .jpg,作用就是将这个.jpg后缀当成php解析。

所以我们先上传这个htaccess文件,然后再上传图片马,就成功了

图片马的创建:

一个图片,一个php文件,然后在命令行下copy xxx.jpg/b + xxx.php/a mmm.jpg,这个mmm.jpg就是图片马

5

这关没有大小写过滤,直接后缀名改成PHP就行了

6

没有过滤空格,用bp抓包在php后面加个空格变成'.php '就成功上传了

注:这个特性是windows下的,linux是不行的

7

没有删除文件后缀的点,又因为windows会自动去除点,那就抓包改成xxx.php.直接绕过,然后windows自动去除点后执行php

8

这关没有过滤::$DATA

像这样写:xxx.php::$DATA,这个::¥DATA写了就相当于没写,但是可以绕过上传成功

9

尝试下冒号截断:冒号可以将web.php:jpg截断,用jpg绕过后再把jpg丢掉,php上传成功,但是文件内容也被清空了。

解决方法:在windows+php+iis(部分apache也可以),<等于*。

那么我们这样写:web.<<<,会转换成???然后会匹配三个任意字符,就匹配上web.php了。

所以这道题抓包改后缀名即可:

10

这关直接抓包双写绕过xxx.phphpp

11

看源码得知上传一个图片放到临时文件夹,然后通过move函数把这个临时文件覆盖到upload目录,正常情况下会是upload/temp.jpg

问题在于这个路径是get,我们可以控制,所以抓包改路径构造成upload/shell.php%00temp.jpg

这样就会把后面的jpg截断,因为php底层是c语言,00在c语言中是停止的意思

所以相当于把shell.php传到upload目录了

(这是php5.2的漏洞)

12

还是00截断,只是改成post了,%是urlcode编码的,这里不能用%了

可以随便写一个内容,这里写了一个点,然后再post的16进制里改成00

13

检测文件内容的前两个字节

先创建一个shell.gif文件,然后在一句话木马之前写一个GIF89a,这是伪造的图片头,上传成功,但是不能用,用文件包含才能用,先复制图片路径,然后打开一个include的文件,再添加参数为图片路径

include就是一个把包含的文件当成php执行的函数

14

用图片马,然后加上一个include包含就行了

.jpg .png后缀的时候不用加GIF89a

15

增加了一个类型判断:

跟上一关操作一样

16

过滤图片马了,也就是会打乱图片顺序,所以图片马就会被打乱了,不能用。

先随便传个上传个图片马,然后再把这个图片下载下来看看发现里面的一句话木马乱了

思路就是在没有混淆的地方插入一句话木马,所以我们用010editor找可以放一句话木马的地方(只要能放下就行):

然后把一句话木马插入这个不会改动的地方就能上了(可能找的地方会把图片格式弄乱,那就换一个地方写一句话木马):

再把文件复制下来用文件包含打开即可(GIF好改一点,jpg、png格式比较复杂,改动容易出错,会被判定为不是jpg、png格式)

jpg、png的话可以用脚本来弄,思路跟gif一样

顺便提一句:比较好的防御方法是吧上传图片文件夹的执行权限去掉

17

这是在上传成功以后才判断的后缀,所以直接写php文件

这关用一个竞争型的思路,因为这源码看得出来,先上传后再判断是否要删除

我们写这样一个php文件:

<?php fputs(fopen('../shell.php','w'),'<?php phpinfo();?>')>;

这个文件执行的话会在上一级目录创建一个php文件,当然,这个文件会被马上删除,但是在上传到删除之间是有一定时间的,我们正是要利用这一点。

手工操作不现实,所以用bp的爆破的方式,相当于多次上传,然后我们就访问xxx/shell.php,一直手动刷新。也可以用bp再开一个进程,一个上传,一个访问就可以访问到了

想避免这种条件竞争的漏洞就先过滤再上传

相关推荐
xuan哈哈哈5 分钟前
web基础—dvwa靶场(八)XSS
web安全·网络安全
dot.Net安全矩阵1 小时前
.NET内网实战:通过命令行解密Web.config
前端·学习·安全·web安全·矩阵·.net
sec0nd_2 小时前
1网络安全的基本概念
网络·安全·web安全
网安CILLE3 小时前
2024年某大厂HW蓝队面试题分享
网络·安全·web安全
SUGERBOOM3 小时前
【网络安全】网络基础第一阶段——第一节:网络协议基础---- OSI与TCP/IP协议
网络·网络协议·web安全
qmx_076 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
Wrop15 小时前
网络安全实训八(y0usef靶机渗透实例)
安全·web安全