1. 程式人生 > >Access手工註入

Access手工註入

.cn nio password exist 技術分享 times 實驗 轉碼 acc

access手工註入

哈哈哈哈,,,我顧北清又回來啦,接著更新。
實驗環境:win2008R2虛擬機,物理機(也就是我的win10)。
搭建環境用的是access+asp源碼。

環境搭建可以參照這裏,不同的是在第六步勾選應用程序開發選項。
環境搞完之後大概是這個樣子的:
技術分享圖片
接著來手工註入一下。
首先判斷有沒有註入點,隨便點進一個頁面:
技術分享圖片
技術分享圖片
%20是空格的轉碼。
and 1=1沒有出錯,再來試試and 1=2
技術分享圖片
出錯了,說明它將這條語句帶入查詢了,說明存在註入點。

1.聯合查詢法
先判斷字段長度,使用order by 猜測的長度
我這裏猜測長度是22(因為我事先知道/滑稽臉,所以命令是order by 22


技術分享圖片
技術分享圖片
判斷到22的時候是正常的,到23的時候報錯了,說明,字段長度是22。
然後來猜解表名,使用的命令是:union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin.
admin是我猜解的表名。
技術分享圖片
發現這裏爆出一個315,說明315這兩個位置存在數據,接著來用猜解的數據替換這兩個位置。
技術分享圖片
圖中的adminpassword是猜解的字段,如果此阿姐正確就會爆出這兩個位置的數據,這樣就拿到了賬號密碼。

2.逐字猜解法
首先判斷是否存在某個表:
這裏使用的命令是and exists ( select * from admin)

,判斷是否存在admin表。
技術分享圖片
沒有報錯,說明存在admin表,接著來判斷admin表中的字段,這裏使用and exists ( select admin from admin)命令判斷在admin表中是否存在admin字段。
技術分享圖片
沒有報錯說明存在,接著看看有沒有password字段。
技術分享圖片
發現也沒有報錯,說明存在。
然後判斷這兩個字段對應數據的長度。
因為我事先知道對應關系,所裏我就直接判斷admin的長度是5,password的長度是16。
使用語句是and (select top 1 len(列名) from admin)=長度值
可以使用and (select top 1 len(列名) from admin)>長度值
來縮小範圍。
技術分享圖片
技術分享圖片
這樣我就判斷出了數據的長度,然後根據數據長度反推數據。
使用的命令是and (select top 1 asc(mid(列名,第幾位,1)) from admin)=長度值,這裏的長度值是ASCII碼。
技術分享圖片
我使用的命令是and (select top 1 asc(mid(admin,1,1)) from admin)=97
可以看到沒有報錯,這裏97對應的是a,而我的admin列裏的數據是admin,剛好對應,如果換成98,那麽就會報錯。
以此類推,猜解出數據。

Access手工註入