事情起因#
來自某內測靶場,未開放註冊,跟隨在字節脈搏的lation
老哥複現一遍,學習姿勢,靶場地址
探尋注入方式#
打開靶場長這樣:
看起來一個 “簡單” 的登錄框,burp
攔截發送reapter
開始探測
看起來很正常,只有username
和passwd
兩個字段,先嘗試萬能密碼帳號
登錄失敗,這裡有個小技巧,建議burp
改參數時選中自己添加的部分ctrl+U
過一次URL
編碼
admin
加單引號也沒啥反應,後面加and 1=1
和and 1=2
也沒啥反應
嘗試passwd
字段加單引號
也沒啥反應,嘗試報錯注入:
也沒啥反應,嘗試寬字節注入:
報錯了,嘗試閉合報錯語句:
經測試,除了--+
還有#
和-- -
均能閉合
注入數據#
老規矩,先查詢列數:
報錯了,可以看到報錯處提示near 'der by 3
,說明我們的or
被吃了,嘗試雙寫繞過:
order by 3
沒問題,order by 4
報錯了,union select
查看回顯字段:
直接回顯登錄成功,flag在flag1表中,列名為key1
(我這裡顯示有點重疊),直接查值
發現沒變化
在報錯注入的時候需有對
information_schema庫
有讀取權限
無
information_schema
庫讀取權限,需同時猜解列名和表名(較難)
那我們就使用之前的報錯注入來查詢數據:
注意,此處在%df%27
後面還有一個%
參考文章:
本文完。