數據庫的秘密
[注意] 本次DDCTF所有WEB題無需使用也禁止使用掃描器 http://116.85.43.88:8080/JYDJAYLYIPHCJMOQ/...
打開后會發現返回如下。
非法鏈接,只允許來自 123.232.23.245 的訪問
此時可以通過修改HTTP請求頭中的X-Forwarded-For即可。即添加以下字段
X-Forwarded-For:123.232.23.245
在這里,我用的是火狐的一個插件Modify Header Value (HTTP Headers)。

發現該網頁是一個簡單的查詢列表。再加上題目中給的hint。可以判斷為SQL注入題目。
經過測試,發現以上三個點均不是注入點。此時分析數據包,可以發現存在第四個注入點。

然后查看源碼,發現一個隱藏字段。經過測試發現,該字段可以注入。
admin' && '1'='1'#
admin' && '1'='2'#
嘗試注入 author,可以發現以下內容信息
- and (可以用&&代替)
- union select (很迷,這兩個不能同時出現,然而自己又找不到其他方式)
- 僅允許#號注釋
然后注入渣的自己就比較無奈了。。不會啊。只好祭出盲注大法了。經過嘗試,最終構造以下payload可用。
admin' && binary substr((select group_concat(SCHEMA_NAME) from information_schema.SCHEMATA),1,1) <'z' #
然后開始寫腳本,此時遇到了一個問題。發現他有一個驗證。為了check你中途是否修改數據,而加入的一個hash比對。
首先將你的準備傳送的內容進行某種hash后變為sig字段,然后再將sig通過get請求一起發送過去。此時服務器端會將sig與你發送的內容的hash比對一下。此時可以減少抓包中途修改內容的可能性。
所以,為了省事,我選擇直接將這個代碼調用一下。
用python的execjs庫,可以直接執行js代碼。
最終跑起腳本,獲取到flag DDCTF{IKIDLHNZMKFUDEQE}

2018DDCTF-Writeup