<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國際加速解決方案。 廣告
                # 19\. 存儲型 XSS 入門 [什么都沒過濾的情況] > 來源:[19\. 存儲型 XSS 入門 \[什么都沒過濾的情況\]](http://www.wooyun.org/bugs/wooyun-2010-016750) ## 簡要描述 存儲型和反射型相比,只是多了輸入存儲、輸出取出的過程。簡單點說: 反射型是:輸入--輸出; 存儲型是:輸入--進入數據庫\*--取出數據庫--輸出。 這樣一來,大家應該注意到以下差別: 反射型是:絕大部分情況下,輸入在哪里,輸出就在哪里。 存儲型是:輸入在 A 處進入數據庫, 而輸出則可能出現在其它任何用到數據的地方。 反射型是:輸入大部分位于地址欄或來自 DOM 的某些屬性,也會偶爾有數據在請求中(POST 類型) 存儲型是:輸入大部分來自 POST/GET 請求,常見于一些保存操作中。 因而我們找存儲型的時候,從一個地方輸入數據,需要檢測很多輸出的點,從而可能會在很多點發現存儲型 XSS。 至于如何根據輸出來構建存儲型 XSS 的代碼,和反射型沒有任何區別,都是看輸出的上下文來進行。 從程序員過濾代碼的角度來講,我們給之后的教程走向分個類: 1\. 數據需要過濾,但是未過濾。導致 XSS。 比如:昵稱、個人資料。 2\. 業務需求使得數據只能部分過濾,但過濾規則不完善,被繞過后導致 XSS。 比如:日志、郵件及其它富文本應用。 本節先看一個最基本的情況,該過濾,但是什么都沒過濾的情況。 (數據庫:不一定是像 mysql 那樣的數據庫,只要是能存儲數據的都算。) ## 詳細說明 1\. 找存儲型的時候,需要有一顆多疑的心,一雙善于發現的眼睛。我們來看看實例! 2\. 某一天,某一群,與某一妹子有以下對話。 ![image](https://box.kancloud.cn/2016-03-23_56f25045abc66.jpg) 3\. 過了一會,就來了這么一條消息,原來是手機 QQ 錄了發上來的。 ![image](https://box.kancloud.cn/2016-03-23_56f25045c032a.jpg) 4\. 這個時候,我們就會想,這個發上來的頁面會不會有 XSS 呢? 5\. 我們來看看頁面的結構。 ![image](https://box.kancloud.cn/2016-03-23_56f25045d0f11.jpg) 6\. 很多新手在找 XSS 的時候,都是拿著`<script>alert(1)</script>`或者其它到處測試,很盲目不是嗎? 一定要記住本節最開頭的話,存儲型 XSS,輸出的位置不一定出現在輸入的位置。 7\. 因而我們有時候需要逆向的思維,來尋找存儲型 XSS。 大概思路如下: 7.1 先找到輸出點,然后猜測此處輸出是否會被過濾。 7.2 如果覺得可能沒過濾,我們再找到這個輸出是在哪里輸入的。 7.3 接著開始測試輸入,看輸出的效果。 7.4 如果沒過濾,那么你就成功了,否則你可以放棄掉它。 8\. 拿本例來說明以上過程, 8.1 我們猜測昵稱這個輸出沒過濾。 8.2 找到輸入點,這個輸入點,就是修改 QQ 昵稱。 8.3 開始測試 通過 WEBQQ 修改昵稱如下:(方法見: WooYun: PKAV 騰訊專場 - 3\. 騰訊 QQ 客戶端某處功能頁面存儲型 XSS ) 使用 charles web proxy 攔截 WEBQQ 數據包,修改并提交。 ![image](https://box.kancloud.cn/2016-03-23_56f25045e6e81.jpg) 提交成功后: ![image](https://box.kancloud.cn/2016-03-23_56f250460fd3b.jpg) 8.4 我們拿小號進入一個群,發布一條手機 QQ 的語音。看輸出效果,沒過濾,成功了吧~~ ![image](https://box.kancloud.cn/2016-03-23_56f250461db2a.jpg) ![image](https://box.kancloud.cn/2016-03-23_56f250462cc9f.jpg) 拿 xsser.me 在某群的測試效果! ![image](https://box.kancloud.cn/2016-03-23_56f250463e4c4.jpg) 登錄他人帳號: ![image](https://box.kancloud.cn/2016-03-23_56f2504657b7b.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>

                              哎呀哎呀视频在线观看