[极客大挑战 2019]Havefun
[极客大挑战 2019]Havefun
解题步骤
启动靶场页面只有一只小猫,没有找到说明有用的信息

查看源码
先查看源代码,按f12打开控制面板找一下有用的信息

代码审计
以下代码比较简单,详细分析一下
$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}
这行代码是以GET请求获取名为cat的参数值,并将其赋值给变量$cat,并输出到页面上没有任何过滤
如果输入的$cat值等于字符串dog,则会输出Syc{cat_cat_cat_cat}。
代码判断如果变量cat=dog值就会输出一些结果,这边猜测会输出flag,所以构造如下payload
http://2cac411a-7976-4fc1-b622-40f20dab93a7.node5.buuoj.cn:81/?cat=dog

成功获取flagflag{e5f8730a-0e21-4de1-9bde-2ff2a70c66e9}
修复建议
因为改代码没有任何过滤,但它存在一个严重的安全漏洞,即 XSS(跨站脚本攻击)漏洞
为了避免XSS漏洞,应该对用户输入的内容进行适当的转义或过滤。在PHP中,可以使用htmlspecialchars()函数来转义HTML标签,确保用户输入的内容不会被浏览器解析为HTML或JavaScript代码。
$cat = $_GET['cat'];
echo htmlspecialchars($cat); // 使用htmlspecialchars以防止XSS攻击
echo "<br>";
if ($cat == 'dog') {
echo 'Syc{cat_cat_cat_cat}';
}

浙公网安备 33010602011771号