系统环境:windows2003
软件:phpstudy2016
apache+php版本:php 5.2.17 apache 2.4.3
magic_quotes_gpc = Off
php.ini中开启extension=php_exif.dll
其他配置均为默认
靶场链接:https://github.com/c0ny1/upload-labs
上传一句话图片木马,用burpsuit抓包,将后缀名改为php。
上传成功,返回图片信息及路径。
第三关的本意其实是想上传一些后缀名为php、php2、php3、php5、phtml等文件去绕过黑名单的,但是apache的配置文件里并没有配置将这些后缀的文件当做php解析
尝试上传.htaccess文件,内容为SetHandler application/x-httpd-php,是成功上传的,但是被重命名了,则无法利用
则尝试用特殊16进制后缀截断尝试,例如0xf7
上传成功,
尝试用蚁剑连接,成功连接。
同样尝试上传.htaccess文件,内容同样为SetHandler application/x-httpd-php,上传成功,并且返回信息显示没有重命名,可以利用。
可以直接上传一句话图片木马,上传成功,并且返回了路径信息。
尝试用蚁剑连接,成功连接。
这道题将特殊字符例如空格,点,::$DATA以及.htaccess文件都给过滤了,如下图,均返回失败
那么尝试将特殊字符重写呢。例如1.php. . (两个点中甲加个.)发现上传成功。
因为Windows的特性,在创建文件的时候,末尾的点会被去掉,则剩下了1.php,我们尝试用蚁剑进行连接,连接成功。
还是照第五题的思路对几个特殊后缀字符进行尝试,同样都不能绕过,则尝试对后缀名进行大小写,例如1.pHP,上传成功。
因Windows特性,创建文件时,忽略大小写,实际保存的文件名后缀即为php,使用蚁剑进行连接,成功。
还是照第五题的思路对几个特殊后缀字符进行尝试,发现空格可以绕过,返回了路径信息。
在windows特性中,创建文件时,忽略结尾的空格,实际保存的文件名后缀即为php,使用蚁剑进行连接,成功。
还是照第五题的思路对几个特殊后缀字符进行尝试,发现点可以绕过,返回了路径信息。
在windows特性中,创建文件时,忽略结尾的店,实际保存的文件名后缀即为php,使用蚁剑进行连接,成功。
还是照第五题的思路对几个特殊后缀字符进行尝试,发现::$DATA可以绕过,返回了路径信息。
在windows特性中,创建文件时,忽略结尾流文件后缀,实际保存的文件名后缀即为php,使用蚁剑进行连接,成功。
这道题主要检测的是文件头,我们上传的所有文件都会被转化为图片格式,我们需要上传一句话图片木马,如下图,将文件后缀改为php上传成功,但返回的为jpg格式文件。
根据页面提示点开文件包含漏洞页面。
根据页面提示通过GET请求的file参数填写我们的图片地址。
在hackbar处用POST提交我们的一句话密码和参数,返回成功。
这道题需要开启文章开头环境说明中的extension=php_exif.dll
先尝试上传一个gif格式的一句话图片木马,上传成功,并且可以右击图片保存路径信息。
用文件包含漏洞解析发现是并没有成功。
将图片下载下来放到winhex中和我们上传的一句话图片木马进行比较,找相同的地方并且修改为自己的一句话。
再对新修改的一句话图片木马上传,上传成功。
用文件包含漏洞页面尽心共包含,返回成功。
这道题提示我们代码审计,通过代码审计发现对上传文件后缀名做了白名单验证,只允许上传jpg、gif、png格式的文件,如果不是这三个类型的文件就会删掉。
那么我们可以尝试使用竞争条件上传,用burp一直上传文件,用python脚本一直方位临时文件,临时文件内容为我们写入一句话到它的目录。
其中phthon代码如下: # coding:utf-8 import requests def main(): i=0 while 1: try: print(i,end='\r') test = requests.get("http://192.168.44.129:9096/upload/upload/success.php") //写入上传位置路径地址 if "260ca9dd8a4577fc00b7bd5810298076" in test.text: print("OK") break except Exception as e: pass i+=1 if __name__ == '__main__': main() 其中上传的文件写入代码如下 <?PHP echo md5(success); fputs(fopen('shell.php','w'),'<?php @eval($_REQUEST[123])?>'); ?>用burpsuit进行抓包,清除掉payload位置。并且将payload选择no payload,将负载调成500。设置好后就可以开始了。
同时将我们的python文件运行。
同样为条件竞争,利用和第十八题一样。
这道题,可以看到名称是可以自行修改的,我们尝试上传图片马,并且修改文件名问php后缀,发现并不能上传上去
那么我们尝试抓包修改上传名为upload-19.php ,有个空格,我们再进入hex讲空格的20修改为00进行截断,发现上传成功。
使用蚁剑进行连接尝试,发现成功了。
这道题需要代码审计,通过审计发现,先检查文件类型,后检查是否上传了文件名没有则为文件的名字,判断是否为数组,若不是则以点分割返回一个数组,取数组最后一位数为后缀,文件保存为reset输出数组第一个数,和最后一位数保存