1. 程式人生 > >SQL注入總結(五)

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的值了