SQLMAP基礎

判斷是否存在注入點

1。根據url是否存在注入點

payload:

sqlmap。py -u <目標註入點>

當注入點引數大於等於兩個時,需要加雙引號

SQLMAP | 超強大的注入工具

圖片中的英語並不難理解,第一個詢問我們經過測試目標註入點的後臺的資料庫引擎彷彿是MySQL,詢問是否跳過對其他資料庫管理引擎的測試;第二個問句詢問在以後的測試中是否一律測試針對MySQL的等級為1的測試,選擇(yes)即可。

SQLMAP | 超強大的注入工具

這張圖就較為完整地展示了該後臺的資訊,並且我們知道,這裡存在注入。 2.根據文字檔案中的請求判斷是否存在注入點 payload:sqlmap.py -r <TXT檔案> 一般當傳遞引數的方式為POST時,我們抓包將請求儲存為文字檔案,使用上述的方法進行post型別的注入;在get方法中,也是有效的。 查詢當前使用者下的所有資料庫 sqlmap.py -u <目標註入點> --dbs 獲取資料庫中的表名 sqlmap.py -u <目標註入點> -D <指定資料庫名> --tables 獲取表中的欄位名 sqlmap.py -u <目標註入點> -D <指定資料庫名> -T <指定表名> --columns 獲取欄位內容 sqlmap.py -u <目標註入點> -D <指定資料庫名> -T <指定資料表名> -C <指定欄位名> --dump 獲取資料庫的所有使用者 sqlmap.py -u <目標註入點> --users 獲取資料庫使用者的密碼 sqlmap.py -u <目標註入點> --passwords 獲取當前網站資料庫的名稱 sqlmap.py -u <目標註入點> --current-db 獲取當前網站資料庫的使用者名稱稱 sqlmap.py -u <目標註入點> --current-user

sqlmap進階

--level 指定探測等級

sqlmap的探測共分為5(1~5)級,使用--level引數指定探測等級,不指定則預設使用等級為1的探測等級,其中5級最高,包含的payload最多,也最耗費時間。sqlmap的payload儲存在sqlmap\xml\payloads資料夾下,可以看到分門別類的payload以xml文件形式儲存。因此我們也可以新增自己的payload。

--is-dba 當前使用者是否為管理許可權

sqlmap.py -u <目標註入點> --is-dba

--roles 列出資料庫管理員角色

用於檢視資料庫使用者的角色,如果當前使用者有許可權讀取包含所有使用者的表,該命令會列舉出每個使用者的角色,也可以使用-U引數指定想看哪個使用者的角色。該命令僅適用於當前資料庫是Oracle時。

--referer HTTP Referer頭

sqlmap可以再請求中偽造HTTP中的referer,當level引數設定為3以上時,會嘗試對referer進行注入。可以使用referer命令來欺騙,如--referer http://www.baidu.com

--sql-shell 執行自定義SQL語句

該命令用於執行指定的SQL語句,如下,假設執行select * from users where id=1 sqlmap.py -u <目標註入點> --sql-shell

SQLMAP | 超強大的注入工具

--os-cmd,--os-shell 執行任意作業系統命令

當資料庫為MySQL、PostgreSQL或SQLserver且當前使用者具有許可權使用特定函式時該指令生效,但實現的原理有所不同。 資料庫為MySQL和PostgreSQL時,sqlmap商戶餐一個二進位制庫,包含使用者自定義的函式sys_exec()和sys_eval()這兩個函式可以執行系統命令。在Microsoft SQL Server中,sqlmap使用xp_cmdshell儲存過程,如果被禁用(2005及以上版本預設禁用),sqlmap會重新啟用它,如果不存在則會被建立。 --os-shell 引數可以模擬一個真實的Shell,當不能執行多語句時,仍可以使用INTO OUTFILE寫進可寫目錄,建立一個Web後門。--os-shell支援ASP、http://ASP.NET、JSP和PHP四種語言。(要執行改引數,需要有資料庫管理員許可權,--is-dba為True)

--file-read 從資料庫伺服器中讀取檔案

適用於MySQL、PostgreSQL或Microsoft SQL Server且當前使用者有許可權執行特定的函式時。讀取的檔案可以是文字可以是二進位制檔案。 sqlmap.py -u <目標註入點> --file-read "路徑" -v 1

--file-write --file-dest 上傳檔案到資料庫伺服器中

資料庫:MySQL、PostgreSQL、Microsoft SQL Server且:當前使用者有許可權使用特定的函式時。可以上傳文字檔案或二進位制檔案

sqlmap的自帶繞過waf指令碼

預設情況下,出了使用CHAR()函式防止出現單引號,沒有對注入的資料進行修改,所以我們在遇到就像寬位元組注入或者是需要變換大小寫來繞過的waf時,sqlmap不太管用,為了解決這個問題,sqlmap自帶了解決此困境的繞過指令碼,使用--tamper引數來使用這些載荷來繞過waf的檢測。 sqlmap.py XXXXX --tamper "模組名"

常用的tamper指令碼:

apostrophemask.py

作用:將引號替換為UTF-8,用於過濾單引號

base64encode.py

作用:替換為base64編碼

multiplespaces.py

作用:圍繞SQL關鍵字新增多個空格

space2plus.py

作用:用+替換空格,空格被過濾時使用

nonrecursivereplacement.py

作用:作為雙重查詢語句,用雙重語句替換預定義的SQL關鍵字(適用於非常弱的自定義過濾器,例如將SELECT替換為空,也就是當我們在手注需要使用雙寫繞過的情況下可以改用sqlmap使用此模組)

space2randomblank.py

作用:將空格替換為其他有效字元

unionalltounion.py

作用:將UNION ALL SELECT替換為UNION SELECT

securesphere.py

作用:追加特製的字串

spae2hash.py

作用:將空格替換為#,並新增一個隨機字串和換行符

space2mssqlblank.py (mssql)

作用:將空格替換為其他空符號

space2mssqlhash.py

作用:將空格替換為#,並新增一個換行符

between.py

作用:用NOT BETWEEN 0 AND替換大於號(>),用BETWEEN AND 替換等號(=)

percentage.py

作用:ASP允許在每個字元前面新增一個%號

sp_password.py

作用:從DBMS日誌的自動模糊處理的有效載荷中追加sp_password

charecode.py

作用:對給定的Payload全部字元使用URL編碼(不處理已經編碼的字元)

randomcase.py

作用:隨機大小寫

charuniocodeencode.py

作用:字串unicode編碼

space2comment.py

作用:將空格替換為/**/

equaltolike.py

作用:將等號替換為like

geatest.py

作用:繞過對“>”的過濾,用GREATEST替換大於號

更多精品,請關注我的主頁