upload-labs靶场(由于版本的问题该靶场要使用php5等后缀名不能使用nts版的php最简单方法使用老版本phpstudy,第十二和第十三关的php版本要求在5.3以下且magic_quotes_gpc为关闭状态(需要自己关闭))

第一关

第一关中直接上传php文件发现其只能上传jpg png gif这种图片文件

并发现在上传操作时无法对其进行抓包所以确定其为前端验证

将一句话木马文件后缀改为jpg进行上传并进行抓包处理

使用bp抓包并将文件后缀改为php后发现成功上传文件

使用蚁剑进行连接,成功连接木马

第二关

第二关发现其并不是前端验证

但直接bp抓包修改后缀名即可成功上传木马,之后使用蚁剑连接即可

第三关

上传php文件后发现其设置了黑名单

不允许上传php文件,故抓包将php文件后缀改为php5进行尝试

进行多次尝试发现新版phpstudy默认下载的php版本有问题故而将版本退回2016进行尝试实验成功,原因是因为新版phpstudy下载的php版本均为nts版配置文件中无法更改识别内容故将其退回2016版本即可

详细内容参考该文章关于PHPStudy中使用AddType application/x-httpd-php该Apache的设置命令无效的问题 - Article_kelp - 博客园

该题是黑名单过滤但并未过滤掉php3或者php5这类文件故更改文件名后缀即可

第四关

首先上传php文件发现被列入黑名单了于是进行上传其余后缀名文件如php3 php5 phtml均无法上传

方法一:于是想到更改配置文件将jpg文件视为php进行解析后进行实验确实可以通过。但是该方法需要管理员权限才可使用

方法二:上传.htaccess文件使其能够将其他类型的文件当作php文件进行解析,在文件中写入AddType application/x-httpd-php jpg.txt使其能够解析jpg文件和txt之后上传这两种文件木马,之后上传木马即可

第五关

首先上传一些文件发现.htaccess文件php文件无法上传但是txt和jpg和.user.ini文件可以正常上传

于是使用.user.ini文件进行尝试

编辑文件内容为

来确保muma文件被包含在php文件前进行解释

之后使用蚁剑连接其中的php文件即可

第六关

上传上面那些文件发现均无法正常使用于是考虑绕过

该关使用大小写绕过即可

更改后缀名大小写即可

第七关

该关使用空格绕过

在文件后缀加入空格即可

第八关

将各种文件上传一遍发现均行不通,遇事不决看源码

该题将所有进行利用的后缀名都列入了黑名单,但是并没有删除后缀名后.的功能于是从此着手

在php的后缀名后加入一个.即可成功

第九关

考察文件数据流

上传php文件在bp中将php改为php::$DATA即可成功上传

上传成功后使用木马进行连接

第十关

考察点空格绕过

将上传的木马文件后缀改为.php. . 即可绕过

之后蚁剑连接.php文件即可

第十一关

该关考察双写绕过根据源码只检测一次后缀名所以双写后缀名即可

后使用蚁剑连接

第十二关

该题目设置白名单且前面方法不能使用,该题考察空字符绕过

使用bp抓包将其上传路径改为muma.php%00即可

第十三关

该关卡也是考察空字符绕过不过使用的是0x00并且使用post传参

如下方修改即可上传成功

第十四关

(注意图片马不宜过大否则会解析失败)

该关考察图片字节与文件包含漏洞

会根据文件前几位字节进行判断,在图片马前加入几个字节方便010进行修改

然后尝试上传文件

成功上传php文件,但此时蚁剑无法进行连接,于是利用文件包含漏洞

进行文件包含使其被解析为php文件使用蚁剑连接即可

第十五关

该关卡环境PHP 4 >= 4.3.0, PHP 5, PHP 7并且开启php_exif

该关使用getimagesize() 函数

故仍使用图片马上传即可,下面为图片马制作指令

之后再次利用文件包含即可

最后使用蚁剑连接。与14关一致

第十六关

该关使用exif_imagetype()读取一个图像的第一个字节并检查其后缀名。
返回值与getimage()函数返回的索引2相同,但是速度比getimage快

其对应解法与14关相同

第十七关

该关对图片进行了二次渲染故需要对文件进行比较

对两次上传的图片进行比较找到未发生更改的地方

使用010进行文件比较即可

找到未发生更改的地方将其改为一句话木马然后上传利用文件包含漏洞访问即可

第十八关

该关使用条件竞争

即先不断上传文件,然后想办法在文件被删除前访问该文件,以达到执行该文件,从而避免被系统删除的目的。之后,我们尝试访问上传后的木马文件,采用同样的思路进行抓包,并将该数据包发送到Intruder模块。启动Intruder模块,使得Burpsuit不断访问该文件,同时在Burpsuit的Repeater模块中不断上传该数据包

凭借运气来进行连接即可