# 6\. 換行符復仇記
> 來源:[6\. 換行符復仇記](http://www.wooyun.org/bugs/wooyun-2010-016003)
## 簡要描述
還是在`<script>`之間的場景,某些情況下,我們僅僅需要的只是一個換行符,就可以繞過過濾了。 它讓雙引號,尖括號知道了“它 們不是一個符號在戰斗”。
1.實際場景是下面這個例子。
```
http://datalib.games.qq.com/cgi-bin/search?libid=178&FilterAttrAND=3602&FilterValueAND=aaaaaaaaaa
```
對應的,我們可以看到我們的輸入 aaaaaaaaa 會在頁面的哪些輸出點出現呢?

2\. 不錯,一共有 5 處,有在 HTML 標簽之間的(教程 1),也有在`<script>..</script>`之間的。但是呢,該過濾的,`<` , `>` 過濾掉了,該過濾的 `"` ,也過濾掉了。。

3\. 也就是說傳統的已經不行啦,我們繼續看 5 處的其他地方。呀,竟然還有一大段注釋里,也出現了我們的【輸出】

4\. 嗯,這樣一來,是否會想到這樣一個用法呢?
```
//我是注釋,我愛洗澡,哦~哦~哦~ [我是輸出]
```
如果可以使用換行符的話。
這樣 `alert(1);` 就會被成功執行。
5\. 恩,帶著這樣一個想法,我們不難構造出以下利用。
```
http://datalib.games.qq.com/cgi-bin/search?libid=178&FilterAttrAND=3602&FilterValueAND=%0aalert(1);//
```
看下輸出。嘿,果然沒過濾。

6\. 這樣,這一次我們的換行符立功了, 它不是一個符號在戰斗!
## 修復方案
盡量不要在 JS 的注釋里輸出內容。還挺危險的。
- 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]