[题目信息]:
题目名称 | 题目难度 |
---|---|
PHP-extract变量覆盖 | 1 |
[题目考点]:
变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。
经常导致变量覆盖漏洞场景有:$$,extract()函数,parse_str()函数等.
[Flag格式]:
SangFor{f2HVuTe47VPOzKlT}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
http://分配ip:2008
[题目writeup]:
1、实验主页
2、源码分析
<?php
include('flag.php');
if ($_SERVER["REQUEST_METHOD"] == "POST")
$SangFor = "666";
$SXF = "2333";
extract($_POST);
if ($SangFor === $SXF) {
$flag;
}
else{
"咋回事呢?";
}
highlight_file(__FILE__);
?>
extract该函数使用数组键名作为变量名,使用数组键值作为变量值。但是当变量中有同名的元素时,该函数默认将原有的值给覆盖掉。这就造成了变量覆盖漏洞。
由此可以通过POST方法覆盖变量$SangFor,将其变量值覆盖为2333,来构造if条件判断为真,即可输出flag。
POST:
SangFor=2333