SQL注入分類以及聯合查詢回顯注入

2022-08-14 06:42:09 字數 2208 閱讀 2433

很多應用程式都使用資料庫來儲存資訊。sql 命令就是前端應用程式和後端資料庫之間的介面。攻擊者可利用應用程式根據提交的資料動態生成sql 命令的特性, 在url 、表單域, 或者其他的輸入域中輸入自己的sql 命令, 改變sql 命令的操作, 將被修改的sql 命令注入到後端資料庫引擎執行。

- 任意查詢使用者資訊

- 任意查詢管理員賬號密碼

- 通過sleep, benchmark 等函式使資料庫阻塞不能正常工作

- 使用資料庫內建的一些函式來執行系統命令

按傳遞引數型別分:

- 例如id = 1 , 數字型注入不需要考慮單引號或者雙引號閉合。用如下方式驗證注入點:

and 1 = 1

and 1 = 2

- 例如name= 'root' , 字元型住入, 需要考慮單引號的閉合和注釋問題。用如下方式驗證注入點:

root' and '1' = '1

root' and '1' = '2      #用於將原有引號閉合

root' and 1 = 1 --+       #通過注釋符號,注釋後面的單引號。用於將name = 'root'   root後面的 ' 注釋掉就變成了name = 'root' and 1 = 2 --+

root' and 1 = 2 --+       #注意:-- 在mysql中,要求第二個 - 後面跟乙個空格或控制字元,+可以代替空格

- 回顯正常: 通過執行構造的sql 注入語句之後, 頁面與原頁面存在差異, 但沒有報錯資訊。

- 回顯報錯: 通過執行構造的sql 語句之後, 頁面報錯, 且將報錯資訊顯示百面上

- 布林型盲注: 構造sql 語句之後, 根據頁面顯示差異來判斷

- 基於時間的盲注: 構造sql 語句之後,根據頁面響應時間來判斷

2. select user from users order by user;    //系統預設對users進行排序

order by 1按照第一列排序,order by 2按照第二列排序

沒有第三列 因此order by 3報錯

order by判斷正常資料庫查詢有多少列。同理查詢有11列結果。

聯合查詢select 1,2顯示為一行

查詢user_id=1的user和password,並將數字1,2顯示出來

執行union後的語句,結果只顯示1行

上面資料庫查詢已知有11列,分別用數字1到11在頁面中顯示出來

經過之前的注入測試,已知資料庫中存在admin、password兩個字段。因為頁面中顯示了2,3,8,9,10總共五個數字,我們隨意替換五個中的兩個為admin、password欄位,這樣admin、password這兩個欄位的內容就顯示出來。

首先 通過order by判斷正常資料庫查詢有多少列,只要查詢結果最終能回顯到頁面上,可以用聯合查詢注入的方法。

SQL注入 聯合查詢注入

注入條件 頁面有顯示位,即在乙個 的正常頁面,服務端執行sql語句查詢資料庫中的資料,客戶端將資料展示在頁面中,這個展示資料的位置就叫顯示位。找的注入點 查詢列數 找到顯示位 獲取列中的資訊 注入點 查詢列數 order by 猜測的列數 order by 11 返回正常,有11列 order by...

聯合查詢SQL注入

sql注入介紹 sql注入介紹 注入產生原因 web應用程式對使用者輸入資料的合法性沒有判斷或過濾不嚴,導致惡意payload直接帶入sql語句執行,從而執行payload中非法操作!新建php檔案,將下面 複製到php檔案中,在瀏覽器中訪問即可 host 127.0.0.1 dbuser root...

sql注入 union聯合查詢注入

目錄 一,sql注入必記的一庫三表 二,union聯合查詢注入 1,基本注入流程 1,判斷注入點 2,判斷多少列 3,判斷顯示位 4,顯示資料庫的基本資訊 5,顯示有哪些資料庫 6,顯示資料庫下有哪些表 7,判斷表裡有哪些字段 八,查詢資料表中有哪些資料 information schema 資料庫...