什麼是偏移注入?
偏移注入是一種注入姿勢,可以根據乙個較多字段的表對乙個少字段的表進行偏移注入,一般是聯合查詢,在頁面有回顯點的情況下偏移注入使用場景
在注入原理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...