本人为新手,发文章只是记录学习笔记,大佬勿喷。
文中很多地方有多种解法,并不唯一。
目录
Pass-01
上传01.php文件,文件内容为:<?php phpinfo();?>
尝试上传,失败了
查看提示,发现这一关是使用js在客户端验证上传文件类型。
这一关我们有两个解决办法,方法一:
把文件后缀改为png,浏览器设置本地代理,使用burp进行抓包
在burp抓住的数据包15行的filename中把文件后缀改为01.php,按左上角的Forward放包。
右键图片,点Copy lmage Link 复制图片链接。
打开新窗口进行访问,可以成功执行php文件。
方法二:
F12查看源代码,把οnsubmit=“ ”里面的都删掉,就不用绕过验证了
直接上传php文件成功
右键图片复制链接,访问执行成功。
Pass-02
创建02.php文件,文件内容为<?php phpinfo();?>
尝试上传文件,不出意外失败了。
查看提示和源代码,可以看到是MIME验证
使用burp进行抓包,修改数据包的Content-Type: 的内容为:image/png ,就可以进行放包了
没有报错,右键复制图片链接
访问能执行。
Pass-03
查看源代码发现是黑名单验证,但不完善,只有四种
在某些特定环境中某些特殊后缀仍会被当作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。但要在phpstudy的配置文件上修改一下,这里我使用的是phpstudy2016版本,php5.2.17。
打开httpd配置文件,添加AddType application/x-httpd-php .php .phtml .php5 .php3 ,保存,重启服务。
创建03.php文件,内容为<?php phpinfo();?> 正常上传03.php文件,失败了。
修改03.php文件后缀为03.php5,上传成功。
右键图片复制链接,打开新窗口访问链接,执行成功
Pass-04
查看源代码可以看到这题也是黑名单验证,而且也比上一题的完善很多 ,这里使用 .htaccess文件
创建.htaccess文件,内容为SetHandler application/x-httpd-php 然后上传,这题并没有限制.htaccess文件上传。
创建04.php文件,内容为<?php phpinfo();?> 修改后缀为04.png 上传成功
右键图片复制链接,打开新窗口访问链接,成功执行
Pass-05
查看源代码,可以利用点加空格绕过 . . 过滤掉一个点就是05.php. 在Windows环境是可以当成php执行的
创建 05.php. . 文件,内容为<?php phpinfo();?> 上传成功
复制链接访问也能正常执行
Pass-06
查看源代码发现没有进行大小写转换,利用大写后缀绕过
创建06.PHP文件,内容为<?php phpinfo();?> 上传成功
右键复制链接,打开新窗口访问,执行成功
Pass-07
查看源代码,发现没有对上传文件后缀未做去空格操作
创建07.php文件,内容为<?php phpinfo();?> 使用burp进行抓包,然后上传,在抓到的包里15行的最后07.php的后面添加个空格,然后放包。 ###给文件重命名给后缀添加空格也可以
返回浏览器可以看到已经上上传成功了。
复制链接,访问可以执行
Pass-08
查看源代码,对上传文件后缀名为做去点处理。
创建08.php.文件,内容为<?php phpinfo();?> 上传成功
右键复制链接,访问能成功执行
Pass-09
这题跟第五题是一样的通过 点+空格+点绕过
创建09.php. .文件,内容为<?php phpinfo();?> 上传成功
复制链接,访问能执行
Pass-10
查看源代码,这题跟第五题和第九题一样,通过 点+空格+点 绕过
创建10.php. .文件,内容为<?php phpinfo();?> 上传成功
复制链接可以访问执行
Pass-11
查看源代码
一开始我创建11.php文件可以正常上传,但复制链接去访问时发现少了php文件后缀,突然想到是过滤,既然被过滤掉了,那就双写绕过重命名为11.pphphp,再次上传,复制链接成功访问执行
Pass-12
查看源代码,是白名单上传
这一关白名单,最终文件的存放位置是以拼接的方式,可以使用%00截断,但需要php版本<5.3.4
,并且magic_quotes_gpc
关闭。
save_path=../upload/的后面追加12.php filename=“12.php”修改后缀为12.png,放包
上传成功
复制链接访问,要把12.php后面的都删掉
访问执行成功
Pass-13
查看编码,这一关跟13关是一样的,只是12题是get,这一题是post。
跟上一题一样,创建13.php文件。内容为<?php phpinfo();?> 使用burp抓包,19行改为png后缀,17行处添加13.php.
后面多出来的点是为了后面方便编译,上一关%00是URL编码,get会自行解码,post不会自行解码,所以这里我们要手动编码。
找到php后面的点,改为00,放包
上传成功,复制链接
访问成功执行
Pass-14
这一关涉及到的是图片马+文件包含
这我使用的图片马制作工具是edjpgcom,写入内容为<?fputs(fopen("shell10.php","w"),'<?php phpinfo();?>')?>
正常上传成功,右键复制链接,点击2.文件包含漏洞的链接
传参值是file,粘贴链接上去,一开始是完整链接无法包含,需要慢慢试,出现乱码就是文件包含成功
生成的php文件位置也需要进行尝试,上面可以看到文件包含漏洞的文件路径是在/upload-labs
所以生成文件肯定也在这目录下,访问执行成功
png,git后缀的上传方式和上面一样,改后缀就行。
Pass-15
查看源代码,发现和上一关差不多
编写好图片马,上传
正常上传成功
复制图片链接,使用文件包含漏洞执行图片马,可以看到上传的文件后缀被改为了jpeg,但没有影响执行
尝试执行生成的shell15.php文件,能执行成功
Pass-16
查看源代码,提示这一关要打开php拓展的php_exif模块才能上传
没有打开php_exif模块是无法正常上传的i
接下来就和前面两关是一样的了,正常上传
复制图片链接,使用文件包含漏洞执行
访问图片马生成的shell16.php文件
Pass-17
因为二次渲染我还没弄明白,后面的暂时也不去尝试了。等技术更好一点再来尝试这个靶场。