打開網頁,頁面如下:
輸入框中輸入不同的數字可以查詢不同的結果。輸入1后點擊submit按鈕,下方出現成績結果。
從題目上看感覺是一個SQL注入的漏洞。
思路有下:
1.自己手動拼接一些常見的SQL注入。
2.用bp抓包后用SQLMap去跑。
首先,我自己嘗試了下手動拼接注入。有輸入1' or '1'='1? 或者 1' or 1=1# 等一些簡單的,但是沒有看見任何異常。于是手動注入失敗。
之后我用sqlmap去爆破。
步驟如下:
步驟一:
用burpsuite去抓包。查看請求方式為post傳參。如下圖所示,把紅框中的內容選擇后保存成一個txt文件。(注:post傳參最好是將請求的所有內容保存成一個txt,之后再用sqlmap去跑會比較方便。)
步驟二:
用sqlmap去爆破。
python sqlmap.py -r D:\path\postReq.txt
如下圖:
允許結束后,入下圖顯示。
紅框里顯示這,參數id是可以注入的。之后的紅框里顯示了數據庫以及網頁服務器的操作系統版本信息。
只要是可以注入的,就可以繼續進一步去爆破數據了。
步驟三:進一步爆破數據。
爆破數據庫:
python sqlmap.py -r D:\path\postReq.txt --dbs
爆破出以下幾個數據庫:
其中information_schema和mysql是系統自帶的數據庫。
skctf和test可能是真實使用的數據庫。在這里,看名稱,我覺得帶“ctf”幾個字母的更有可能。于是選擇skctf繼續爆破。
爆破表名:
python sqlmap.py -r D:\path\postReq.txt -D skctf --tables
結果如下:?
看表名,選擇 fl4g 的表繼續爆破。
爆破列名:
python sqlmap.py -r D:\path\postReq.txt -D skctf -T fl4g --columns
結果如下:
看列名,選擇skctf_flag繼續爆破。
爆破指定列名中的所有數據:
python sqlmap.py -r D:\path\postReq.txt -D skctf -T fl4g -C skctf_flag --dump
結果出現:
爆破成功!