頁面提示我們postusername與password兩個引數,看了看原始碼,裡面提示了我們sql語句
$sql="select先隨手post幾個數試試,發現頁面返回有四種形式,當輸入admin,admin時返回login failed,當輸入admin',admin時發生報錯,當輸入admin' and '1'='1,admin時出現sql injection detected,甚至輸入(),admin返回了user name unknow error.,這就表明伺服器端對輸入字元進行了過濾,每當返回sql injection detected就表明存在被過濾的字元或字串。*from users where username=
'$username
'and password=
'$password
'";
首先手動測一下username過濾了些啥:『=『、『;』、『#』、『,』、『()』、『-』、union,limit,substr,floor,mid我已經感覺username涼了,()都給濾了還玩個毛線
接著去看看password有沒有希望:『=』、『;』、『#』、『-』、union、limit、substr,mid,floor,extractvalue,updatexml
大佬還給我留了乙個name_const,但=又被和諧了,這麼一來根本沒軟用,好一道勸退題啊
接下來肯定又是學習沒見過的科技的時間了
看了p神的操作,首先是基本操作用or語句報錯整出了資料庫名:error_based_hpf
通過庫名的提示,這裡有個hpf,hpf全稱為http parameter fragment,sql注入裡有一種就叫http分割注入
payload:
username=' or updatexml/*&password=*/(1,concat(0x3a,(select user())),1) or '
這裡username最後為 /* 而password最前面為*/ 在拼接的時候就實現了/* */注釋功能
這一題的意思就是在username過濾(),password過濾報錯語句,因此我們要在username處使用報錯語句,password處使用()
知道原理後開始操作:
知道了庫名之後接下來就是拿錶,但由於這裡和諧了limit,=與like,這裡需要用regexp來代替=
爆欄位:
愉悅的去拿flag
雖然結果出來了,但想到前面p神還提到另一種思路,由於題目沒有過濾regexp,那麼這裡可以直接在password處採用exp報錯
之前已經知道了資料庫名,那麼我們直接來報表名:
接著是列
最後來dump資料:
實驗吧 加了料的報錯注入
前言 不得不說這一題對我來說挺有難度的,以前沒有遇到過。看了別人的writeup過後,也想要記錄一下,給自己攢攢經驗 這題的解法有兩種 2 exp 報錯注入 hpf注入 檢視原始碼 就是要提交post資料,我直接在burpsuite裡面操作。隨便輸入兩個引數,頁面提示login failed。根據原...
加了料的報錯注入 實驗吧
題目直接告訴了我們注入點存在於我們post進去的兩個變數,即username和password當中,f12檢視原始碼後得到提示,sql語句是以單引號的方式進行閉合的後進行注入測試。首先對username進行注入,經過初步測試對 進行了過濾,採用 進行繞過。顯示雖然waf被繞過username中依舊存...
實驗吧 加了料的報錯注入 exp報錯注入
先檢視頁面原始碼得到提示知道了後台執行的sql語句,很常規的查詢 測試了乙個報錯函式發現如下回顯,可見遮蔽了報錯資訊,也有可能是監測到了updatexml這個報錯函式,於是先用burp來fuzzing測試一波,看看哪些關鍵字 被遮蔽了 burp抓包並send to intruder 分別對usern...