漏洞介绍:XSS漏洞
参考文章:XSS挑战之旅
游戏规则:触发alert()弹窗,进入下一关
进入第一关

随便输入一下,观测输出,看源代码

输入语句进行测试,触发弹窗,进入第二关

源码
欢迎来到level1 欢迎来到level1
欢迎用户".$str.""; //直接对传入的参数进行输出,没有过滤?>![]()
payload的长度:".strlen($str)."";?>
分析浏览器加载的结果
1 ------------------------------------------------$str=欢迎用户".$str."
2 ------------------------------------------------欢迎用户
3 ------------------------------------------------欢迎用户
输入语句进行测试

查看网页源代码

补充:htmlspecialchars($str)

分析浏览器加载的结果
alert(1)"> //这里的是字符串
""> //闭合引号,这里的可以被浏览器加载
------------------------------------------------
"
">
进入下一关

源代码
没有找到和".htmlspecialchars($str)."相关的结果.".' ';
?>
输入语句进行测试

测试,看效果修改

payload

下一关

源码
没有找到和".htmlspecialchars($str)."相关的结果."." ";
?>
输入语句进行测试

继续测试11111' onclick='alert(1)

测试11111" onclick="alert(1)

下一关

源码
","",$str); //替换了< >$str3=str_replace("<","",$str2);echo "没有找到和".htmlspecialchars($str)."相关的结果.
".' ';
?>
输入语句进行测试

测试

测试
123">

浏览器加载效果 
源码
没有找到和".htmlspecialchars($str)."相关的结果.".' ';
?>
大写绕过

源码
转义了echo "没有找到和".htmlspecialchars($str)."相关的结果.
".' ';
?>
测试

测试绕过


双写绕过
页面

测试
过滤了< 和>

测试

payload
利用HTML语言的解析顺序,使得type="text"

源码
","",$str11); //过滤< >$str33=str_replace("<","",$str22);echo "没有找到和".htmlspecialchars($str)."相关的结果.
".' ';
?>