[极客大挑战 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}';
}

posted @ 2025-06-14 15:35  云懿  阅读(221)  评论(0)    收藏  举报