0x00 前言
最近遇到很多在做基礎靶場的小伙伴們都在SQLMap一把索,那么所幸搞一個SQLMap繞過的靶場。
我們是好靶場,一個立志于讓所有學習安全的同學用上好靶場的團隊。
https://github.com/haobachang-1/haobachangBlog/
https://github.com/haobachang-1/haobachangBlog/tree/main/SQLMap%E6%94%BB%E9%98%B2
0x01 開啟環境
進入環境
如果要自己嘗試的伙伴們可以從這里開始自己嘗試了。
0x02 開工
輸入admin,看看效果
輸入單引號,有報錯,那基本上就是有SQL注入
單引號閉合,發現是存在漏洞的
來叭,SQLMap,交給你了
哦豁,失敗了,SQLMap并沒有正常的工作
0x03 繞過
從我們的掃描結果可以看出來,頁面是返回了404,可能是因為檢測了什么內容。
根據過往經驗,最好去識別的是SQLMap的UA特征。SQLMap默認情況下UA就是SQLMap。
我們進行一個簡單的測試,切換為SQLMap的UA,發現果然,是檢查了UA。
那我們就需要去繞過了,SQLMap有一個自帶的隨機UA的功能。
我們使用這個試試,ok成功了。
拿一下Flag
徽章到手
備注:
SQLMap 是一款開源的自動化 SQL 注入檢測與利用工具,主要用于幫助安全測試人員、滲透測試工程師等在合法授權的前提下,檢測 Web 應用程序中是否存在 SQL 注入漏洞,并對已發現的漏洞進行深度利用,以評估系統的安全風險。
一些基礎知識
SQL 注入(SQL Injection)是一種常見的網絡攻擊手段,其核心是利用 Web 應用程序對用戶輸入數據的處理漏洞,通過注入惡意的 SQL 語句,操縱后端數據庫執行未授權操作,從而獲取敏感信息、篡改數據甚至控制服務器。
原理:輸入處理的漏洞
Web 應用程序通常需要與數據庫交互(如查詢用戶信息、提交表單等)。正常情況下,應用會根據用戶輸入構建 SQL 查詢語句,例如用戶登錄時,可能執行這樣的 SQL:
sql
SELECT * FROM users WHERE username=‘用戶輸入的用戶名’ AND password=‘用戶輸入的密碼’;
若應用未對用戶輸入進行嚴格驗證或轉義,攻擊者可以構造特殊輸入,改變 SQL 語句的結構。例如,在 “用戶名” 輸入框中填入 ’ OR ‘1’='1,此時 SQL 語句會變成:
sql
SELECT * FROM users WHERE username=‘’ OR ‘1’=‘1’ AND password=‘用戶輸入的密碼’;
由于 ‘1’=‘1’ 恒為真,這條語句會返回數據庫中所有用戶的信息,導致攻擊者繞過登錄驗證。
常見攻擊方式
登錄繞過:如上述例子,通過注入讓 SQL 條件恒為真,直接登錄系統。
數據竊取:利用 UNION 聯合查詢,讀取其他表的敏感數據(如用戶密碼、銀行卡信息)。
例:輸入 ' UNION SELECT username, password FROM users --,可能獲取所有用戶賬號密碼。
數據篡改 / 刪除:注入 UPDATE 或 DELETE 語句,破壞數據庫數據。
例:輸入 '; DELETE FROM users --,可能刪除所有用戶記錄。
權限提升:通過注入獲取數據庫管理員權限,甚至遠程控制服務器。