-
-
[原创]pikachu靶场--xss续
-
发表于: 2026-3-3 17:15 565
-
dom-xss-x
查看源码

payload 'onclick="alert('wyz')">
闭合后相当于 "<a href=''onclick="alert('wyz')">"+xss+"'>就让往事都随风,都随风吧</a>"
a标签就是"<a href=''onclick="alert('wyz')">"

对应的引号闭合后就只剩下 '>就让往事都随风,都随风吧
点击触发事件

xss-盲打
随意输入一些内容后,返回

初步猜测这是一个存储型的xss,并且评论内容用户不可见,那么payload注入后可能是由管理员来触发
那我们登录管理员账号

为了验证我们的想法
还是采用我们最爱的<script>alert('xss')</script>,由于有两个可注入点,一个用xss1,一个用xss2表示

再次管理员登入


xss-过滤
随意输入

直接注入<script>alert('xss')</script>,发现

说明输入被过滤了
简单测试一下他的过滤机制 <script>!#,.?123xasf

发现<script>会被过滤
简单对<script>大小写进行改变 <SCript>alert(1)</sCRipt>

再尝试一下不使用<script>的payload <a href=''onclick="alert('wyz')">

发现已经生成链接,点击返回wyz弹窗

xss-htmlspecialchars
输入hhh看看源码什么情况 <a href='hhh'>hhh</a>

再次输入<script>,'"123qwe看看字符过滤
发现<>和"被编码

那在payload的选择上我们就避免这两种字符 ' onclick='alert(1)
相当于变成了<a href= '' onclick='alert(1)'>
点击链接有1弹窗响应
也可以使用javascript伪协议的payload alert(1)
那就等同于<a href='alert(1)'>
同样点击后响应1弹窗
需要注意的是,这两种payload中alert括号中的内容不能是'xss','会和前面的'闭合,提前结束属性值
xss-href
输入a29K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0

点击链接跳转至百度,查看源码

看着和上一个模块差不多,直接注入' onclick='alert(1)看看
失败了,再看源码发现单引号被编码了

那我们使用alert(1),成功注入

但我们发现alert('xss'),也能成功,这是为什么呢

查看源码

实际上对于href=' onclick='alert(1),整个字符串都成为 href 的内容,而 onclick 并没有被解析为一个独立的属性,因为单引号被编码后失去了属性分隔符的功能。
而对于href=javascript:alert(' xss')来说,浏览器在解析html属性时,会先将 html实体还原成字符,所以实际 href 的值变为 alert('xss')
xss-js
输入yaoming看看源码,是js脚本

尝试输入<script>alert(1)</script>,再查看源码发现本来脚本的</script>被我们注入的payload提前闭合了
那我们构造payload时先用</script>闭合脚本开始的<script>,后面的内容就可以任意发挥了 </script><script>alert('js')</script>

我们还可以使用 ';alert(document.cookie);// '用于闭合前面的',//则是注释掉后面的内容
