實驗吧 後台登入

2021-09-02 01:46:29 字數 898 閱讀 3075

檢視原始碼:

$password=$_post['password'];

$sql = "select * from admin where username = 'admin' and password = '".md5($password,true)."'";

$result=mysqli_query($link,$sql);

if(mysqli_num_rows($result)>0)

else

問是否能通過提交特定的post引數password,讓上示**執行到「echo 'success';」。

回答是肯定的。這顯然是乙個注入問題,問題的關鍵在於md5函式的第二個引數為true。

先看php中的md5函式,它有兩個引數string和raw。 第乙個引數string是必需的,規定要計算的字串。 第二個引數raw可選,規定十六進製制或二進位制輸出格式:

當md5函式的第二個引數為true時,該函式的輸出是原始二進位制格式,會被作為字串處理。 理解這一點後,問題就簡單了。 只要提交特定字串,讓其md5值以原始二進位制格式輸出(被當作字串)時含有能觸發sql注入的特殊字元即可。

content: 129581926211651571912466741651878684928

hex: 06da5430449f8f6f23dfc1276f722738

string: t0do#'or'8

content: ffifdyop

hex: 276f722736c95d99e921722cf9ed621c

string: 'or'6]!r,b

所以說這個答案是有道理的==、才不是什麼腦洞那麼簡單。。。

flag

php中md5($str,true)注入

實驗吧 後台登入 Writeup

感覺學習到了瓶頸了,最近還在備考s 工作也特別忙,有空的話,每天搞個web相關的ctf題目做做吧,學些姿勢。一進去就發現是需要登陸,第一反應是注入。試了一會,萬能密碼啥的發現都提示密碼錯誤。審查元素,發現了注釋,已經給了sql語句了,發現密碼是被md5加密的,並且只輸出16位,並且以 raw bin...

後台登陸 實驗吧 Write up

格式 flag 開啟源 其中最重要的一句就是 sql select from admin where username admin and password md5 password,true 首先解釋一下md5這個函式 這裡的引數為true,大致意思就是對你輸入的密碼進行32位md5加密後,再進行...

實驗吧 簡單的登入題

這是在實驗吧上面的一道web題。主要考察cbc位元組反轉攻擊。題目開始就是輸入id去登入 首先想到的就是sql注入了,輸入1 後頁面顯示hello,重新載入的話頁面返回報錯資訊 確實存在注入,看那後面的逗號,猜測注入點在limit後面。然後試了很多,發現題目把union,procedure等都過濾了...