SQL注入之偏移注入(Access)

2021-09-26 18:57:04 字數 2620 閱讀 7923

什麼是偏移注入?

偏移注入是一種注入姿勢,可以根據乙個較多字段的表對乙個少字段的表進行偏移注入,一般是聯合查詢,在頁面有回顯點的情況下

偏移注入使用場景

sql注入的時候會遇到一些無法查詢列名的問題,比如系統自帶資料庫的許可權不夠而無法訪問系統自帶庫。

當你猜到表名無法猜到欄位名的情況下,我們可以使用偏移注入來查詢那張表裡面的資料。

像sqlmap

之類的工具實際上是爆破欄位的名字,但是如果欄位名稱比較奇葩,

就無可奈何了

注入原理

假設乙個表有8個字段,admin表有3個字段。

聯合查詢payload:union select 1,2,3,4,5,6,7,8 from admin 

在我們不知道admin有多少欄位的情況下可以嘗試payload:union select 1,2,3,4,5,6,7,admin.* from admin,此時頁面出錯

直到payload:union select 1,2,3,4,5,admin.* from admin時頁面返回正常,說明admin表有三個字段

然後通過移動admin.*的位置,就可以回顯不同的資料

表名.*==>這是什麼意思呢,「.」在我們學過的程式語言中一般都是乙個連線符,而*號則是表示萬用字元,表名.*就是代表該錶下的所有字段,其實這裡個人感覺表名.*和單獨乙個*號表達的意思應該一致

inner join 關鍵字語法,注釋:inner join 與 join 是相同的。

select column_name(s)

from table_name1

inner join table_name2

on table_name1.column_name=table_name2.column_name

as關鍵字

admin as a #把admin重新命名為a
判斷注入點

開啟漏洞所在url,此處有過濾,可以用cookie進行注入,通過外掛程式,正常開啟頁面,如下圖

輸入and 1和and 0來判斷注入點。如下圖

猜測資料庫中是否存在admin表,經過測試存在,如下圖

判斷字段數,經過測試,共26個字段,直接進行聯合查詢,如下圖

使用偏移注入判斷admin表的字段數,經過測試,admin表共16個字段,如下圖

出來了一些東西,這個位置之前是第25個字段,也就是admin的第15個字段

移動admin的字段的位置,成功獲取flag,如下圖

注意:這裡使用*號可以正常回顯但是查詢不出資料,最後使用的admin.*

在某些情況下,通過偏移注入,我們獲取不到想要的資料怎麼辦,

假設表中存在id欄位

首先給表重新命名 admin as a   admin as b

獲取id 一樣的字段 admin as a inner join admin as b on a.id=b.id 這樣做我們可以打亂隨機順序,不過這樣之後作為乙個整體查詢,欄位數要乘以2

payload:union select 1,2,(admin as a inner join admin as b on a.id=b.id).* from admin

暫時這些吧

ACCESS資料庫偏移注入

偏移注入主要是針對知道表,但是不知道欄位的access資料庫。比如我們已經知道了表名是 admin 判斷字段數 order by 22 返回正常 order by 23 返回錯誤 欄位數為 22 爆出顯示位 判斷表內存在的字段數 union select 1,2,3,4,5,6,7,8,9,10,1...

注入攻擊之sql注入

在1998年,一位名為rfp的黑客發表了一篇題為 nt web technology vulnerabilities 的文章 注入攻擊的兩個條件 1 使用者能夠克制資料的輸入 在這裡,使用者能夠控制變數 2 原本要執行的 憑藉了使用者的輸入 一般輸入乙個 單引號就能引起執行查詢語句的語法錯誤,有些伺...

SQL注入之報錯注入

固定語句公式 union select 1 from select count concat floor rand 0 2 注入爆資料語句 a from information schema.tables group by a b 假如id輸入存在注入的話,可以通過如下語句進行報錯。mysql se...