Access手工注入
Access注入
哈哈哈哈,,,我顧北清又回來啦,接著更新。
實驗環境:win2008R2虛擬機器,物理機(也就是我的win10)。
搭建環境用的是access+asp原始碼。
環境搭建可以參照ofollow,noindex">這裡 ,不同的是在第六步勾選
環境搞完之後大概是這個樣子的:  接著來手工注入一下。 首先判斷有沒有注入點,隨便點進一個頁面:   ```%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```是我猜解的表名。  發現這裡爆出一個```3```和```15```,說明```3```和```15```這兩個位置存在資料,接著來用猜解的資料替換這兩個位置。  圖中的```admin```和```password```是猜解的欄位,如果此阿姐正確就會爆出這兩個位置的資料,這樣就拿到了賬號密碼。 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,那麼就會報錯。
以此類推,猜解出資料。