SQL注入總結(五)
常見的搭建組合:
指令碼格式 |
資料庫 |
搭建品臺 |
作業系統 |
Asp |
Access,SqlServer |
IIS |
Windows |
Php |
Mysql,postsql |
Apache,IIS |
Windows,linux |
Aspx |
SqlServer |
IIS |
Windows |
Jsp |
Oracle,SqlServer |
IIS,tomcat |
Windows,linux |
Access注入:
Access資料庫是微軟釋出的,輕快小巧
結構:資料庫==》表名==》列名==》資料
和mysql資料庫不同的是,mysql資料庫中有information_schema表,可以使用聯合查詢來查詢敏感表中的敏感資料,access資料庫中沒有information_schema表,因此access資料庫的注入,只能靠暴力猜解的形式進行
猜資料表:and exists(select * from user)是否存在user表
猜解資料列:and exists(select admin from user)是否存在admin列
猜解資料列的長度:and (select top 1 len(admin)from user)> 3
猜解出admin列內容長度
猜解資料列的內容:and (select top 1 asc(mid(admin,1,1)) from admin)> 97 猜解出admin列的內容
可以選擇sqlmap進行暴力破解
Access偏移注入:
偏移注入原理:借用資料庫的自連線查詢讓資料庫內部發生亂序,從而偏移出所需要的欄位在我們的頁面上顯示
偏移注入的用途:
解決知道access資料庫中知道表名,但是得不到欄位的sql注入困境
偏移注入的特點:
A:成功與否看技巧和運氣,不能100%成功
B:無需管理員賬號密碼欄位,直接爆賬號密碼
偏移注入的利用條件:
A:已知管理表名
B:已知任意欄位(一個或多個會增加機率,最常見的就是id)
影響偏移注入的成功率的因素:
A:管理表的欄位數越少越好(最好是三個:id 賬號 密碼)
B:當前注入點的指令碼內容查詢的表內的欄位數越多越好(最好有幾十個,這樣基本成功率是100%)
C:已知的欄位數越多越好(id一般存在)
偏移注入的一般流程:
1.判斷欄位數
2.判斷表名
3.開始偏移注入
舉例:
1.首先用order by 判斷欄位數
Id=1 order by 5
2.用union select 爆欄位顯示位
Id=1 union select 1,2,3,4,5 from admin
假設爆出欄位顯示位為2,3,列名為 username,password
Id=1 union select 1,username,password,4,5 from admin
這樣就可以得到username,password的值了