文章目录
- pass-01和pass-02
- pass-03___黑名单--修改文件后缀名
- pass-04___.htaccess绕过
- pass-05___黑名单--大小写绕过
- pass-06__利用Windows系统的命名机制
- pass-07__IIS6.0解析漏洞---文件解析
- pass-08__IIS7.0 | IIS7.5 | Nginx的解析漏洞
- pass-08__Apache解析漏洞
- pass-10__双写绕过
- pass-11__00截断
- pass-12__IIS6.0解析漏洞----目录解析
- pass-13/pass-14/pass-15同一个类型___源文件检测了文件头
- pass-16__二次渲染漏洞
- pass-17
- pass-18
- pass-19
- pass-20
- 总结
pass-01和pass-02
两个都是后端MIME检测,所以只需修改MIME类型即可
这里上传一个webshell
注意:x=phpinfo();
------> ()
和;
不要漏了!!!
pass-03___黑名单–修改文件后缀名
前提:Apache的httpd.conf中有如下配置,注意#要去掉
修改.php
后缀名为.phtml
pass-04___.htaccess绕过
①先制作一个图片马,1.php
中为一句话木马
<? php @eval($_POST[x]); ?>
准备好一句话木马和一个.png
文件2,然后在该文件目录下,在命令行输入 copy 2.png/b+1.php/a 3.png
②配置
.apache
配置文件为AllowOverride All(默认为None)
Apache开启rewrite模块
下面表示存在.htaccess
文件的目录下,所有文件都会被解析成php代码
执行
<IfModule mime_module>
SetHandler application/x-httpd-php
</IfModule>
③success
pass-05___黑名单–大小写绕过
查看源文件,发现它虽然列举了很多,但没有把拓展名转为小写,所以直接把.php
改为.pHP
鼠标右键直接得图像地址
pass-06__利用Windows系统的命名机制
pass-07__IIS6.0解析漏洞—文件解析
xx.asp;.jpg
像这种畸形文件名在;
后面的直接被忽略,也就是说当成xx.asp
文件执行。
pass-08__IIS7.0 | IIS7.5 | Nginx的解析漏洞
**原理:**Nginx拿到文件路径(更专业的说法是URI)
/test.jpg/test.php
后,一看后缀是.php
,便认为该文件是php文件,转交给php去处理。php一看/test.jpg/test.php
不存在,便删去最后的/test.php
,又看/test.jpg
存在,便把/test.jpg当成要执行的文件了,又因为后缀为.jpg,php认为这不是php文件,于是返回Access denied。
这其中涉及到php的一个选项:cgi.fix_pathinfo
,该值默认为1,表示开启。开启这一选项PHP可以对文件路径进行修理。
举个例子,当php遇到文件路径/1.jpg/2.txt/3.php
时,若/1.jpg/2.txt/3.php
不存在,则会去掉最后的/3.php
,然后判断/1.jpg/2.txt
是否存在,若存在,则把/1.jpg/2.txt
当做文件/1.jpg/2.txt/3.php
,若/1.jpg/2.txt仍不存在,则继续去掉/2.txt,以此类推。
pass-08__Apache解析漏洞
原理: Apache解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如test.php.a.b的“.a”和“.b”这两种后缀是apache不可识别解析,apache就会把test.php.a.b解析成test.php。
pass-10__双写绕过
str_ireplace()函数表示将后缀名置为空,但只进行一次
将后缀名改为.pphphp
做这题时要注意apache配置问题,如果之前改过要记得改回来,还有php版本也要注意不要太低。我就是没有改导致直接上传.php
文件也成功了,这是因为做pass-04___.htaccess绕过
的时候改了配置,却忘了改回原样,所以不带扩展名也可以访问。
pass-11__00截断
PHP版本要小于5.3.4
,php的magic_quotes_gpc
为OFF状态
pass-12__IIS6.0解析漏洞----目录解析
将目录名修改为upload.php
,所有文件都会被解析成php
代码执行
pass-13/pass-14/pass-15同一个类型___源文件检测了文件头
pass-13
上传文件名为3.png
的图片马,但查看源码发现有检测文件头,因为只读两个字节,所以加上GIF89
即可,GIF89A
也相同
pass-14
这里获取的是文件信息,不像上面只获取两个字节,所以加上GIF89A
pass-15
exif_imagetype()
读取一个图像的第一个字节并检查其签名。
去掉分号
和前面两个一样,这个只检查第一个字节,所以GIF8,GIF89,GIF89A
均可
pass-16__二次渲染漏洞
制作图片马3.gif
,注意!创建2.gif的时候不能是空文件
右键将图片保存到桌面
将其放在010Editor观察发现没有<?php phpinfo(); ?>,加上后保存
pass-17
上传图片马,在010中发现有<?php phpinfo(); ?>
但有一堆乱码,不知道是不是正常现象
pass-18
上传图片马
pass-19
查看源码,是改过之后的文件名,所以直接上传shell.php即可
pass-20
修改文件类型即可
总结
以下是我做题所查看的资料还有遇到一些问题时的解决方法的网站
点击查看各个漏洞原理
apache启动失败
apache不带扩展名访问