黑名单绕过
我们查看源代码,发现不准上传 .jpg .png .gif后缀名的文件
于是,我们制作一个图片木马
制作成功
我们利用burp的抓包工具,去获取数据包
修改上传文件的后缀名为.php
发现文件上传成功
进入图片链接,发现果然是一个php码
利用菜刀进入成功进入后台
同样是是上传文件,但是前端检测点不同
我们同样制作图片码,利用burp抓包,修改文件后缀名为php,一样能拿下服务器
我们查看图片源代码
我们发现他们把以.asp .aspx .php .jsp尾缀结尾的,全部都禁止了
我们可以利用其他的文件后缀名,后台数据库同样可以解析文件
于是我们同样上传文件,同样利用burp来抓包,修改后缀名
拿下服务器
我们发现这个源代码,啪啪的一大段代码,几乎隔绝了大部分的敏感文件的后缀名
我们利用cmd修改文件后缀名
ren 1.txt .htaccess
然后上传去
发现
显然上传成功,然后发现上传我们的图片木马
利用菜到拿下服务器
发现他隔绝了很多文件的后缀名,同时关闭了.htaccess
于是我们利用文件后缀名的大小写
图片码上传成功
拿下服务器
查看源代码
发现他把所有文件的大小写都强制转化为小写
各种方式都试过了,我们尝试改文件后缀名,在后缀名后面加一个空格
图片码上传成功,拿下服务器
我们同样去抓包,然后发现它又几乎把很多东西都隔绝了,我们尝试输入.php.来绕过
成功绕过,拿下服务器
几乎阻止了大部分的上传的漏洞,但是却没有防止::$DATA
于是,我们照样上传文件
拿下服务器
查看源代码
发现它是隔绝了大多的上传漏洞,但是我们发现它是有一个逻辑漏洞,那就是它只检测了一遍。
于是我们自己构造文件的后缀,主动让它来检测,并删除多余的尾缀
看到它首先第一个删除文件末尾的点,再删除文件末尾的空格
.php. .
删除完过后就是.php.
正则匹配发现,并没有隔离php.文件后缀名,文件同样可以上传成功
文件上传成功拿下服务器
我们查看源代码,发现它自动把所有php等等文件后缀的敏感字母给替换成空
于是,我们构造双尾缀
把后缀名换成 .pphphp
等系统自动删除php过后就会剩下.php
上传文件,果然上传成功
我们首先在看源代码
发现它只有当if()>0,它才执行上传文件,于是我们利用%00截断绕过
把文件后缀名修改成666.php%00.jpg
而**%00是一个URL编码,它会被转化成0x00**,这是16进制的表示ascii码值为0,有些函数在处理这个字符的时候会把这个字符当做结束符,他们就读取到这里认为这一段结束了。
下面我们进行文件上传
图片码上传成功
我们访问图片地址,发现它真的单纯是一个图片,并不是php文件
原因是它把我们传上去的图片进行了重命名,导致我们上传的改文件后缀名的方式失效了
所以,我们无法对上传的文件名,进行操作,于是,我们继续抓包,看看能否在保存路径的时候进行操作
发现这边有一个保存路径可以操作
于是,我们修改保存路径尝试利用保存的路径中利用%00来终止文件的识别
发现文件上传失败
同时它报错了,我们发现报错后面存在一个重命名的文件,我发现是我少打了一个%,于是继续上传
上传成功
拿下服务器
同样是00截断,我们把同样抓取一个数据包,先上传图片码
我们发现,它这是POST传参的保存,那么它肯定是不能识别URL栏的%00的
于是,我们直接修改它的HEX值
然后在HEX那边修改
修改成00
图片码上传成功,打开图片地址
拿下服务器
直接上传图片码就行了,下载过后,图片码不会被消失,依然在
二次渲染,就是图片上传后,会进行渲染,导致我们本来上传的图片码,被篡改,失效,但是gif文件因为是动态文件,他被渲染的时候,第一部分是不会被修改的,但是第二部分会被修改。于是,我们制作gif的图片码。
条件竞争
因为数据库删除文件是需要时间的,所以我们一直去访问就可以在被删除之前访问到,访问到就回执行我们文件里的代码
';file_put_contents('1.php',$a)?>
我们利用
burp跑包,两个线程,一个疯狂上传,一个疯狂访问。
我首先先抓一个上传图片码的包,并传到Intruder模块、
接着,我再上传一张正常图片,找到保存的地址
修改地址,访问666.php的文件
再抓包,传到Intruder
开始爆破
move_uploaded_file()截断
move_uploaded_file()函数是将文件移动到一个新的位置
我首先上传一个图片码
发现他会重命名,并且移动文件,那他肯定会用到这个函数,于是我们修改hex的值进行截断
IIS6.0除了将ASP后缀当做ASP进行解析的同时,当文件后缀名字为.asa .cer .cdx 也会当做asp去解析,这是因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx 都会调用 asp.dll
我们制作好asp的一句话木马,然后利用burp抓包
修改文件后缀名,拿下服务器
IIS6.0会识别 ; 的截断符直接上传文件,我们把文件后缀名改成。asp;.jpg就可以实现文件上传成功。
但是注意,这个和00截断是不同的,如果我们访问555.asp是访问不到的
必须得访问555.asp;.jpg才能访问到
asp/123.jpg 他将当做asp进行解析
和第二十二题一样,我们需要上传.asp/.jpg