BUUCTF-[GXYCTF2019]BabySQli 1詳解
阿新 • • 發佈:2020-10-22
babysqli 注入題,開啟一個簡易的登入框,覺得出題人好像不是個完美主義者,登入框做的很爛,但是我是個弟弟,還是要說出題人牛逼
好了,廢話不多說,我們填寫賬號密碼,先用
username:admin
password:admin
告訴我,wrong pass!
然後我們再試試萬能密碼,
username:admin' or '1'='1'#
password:隨意填
然後告訴我do not hack me!
我索性看了下原始碼,裡面有一段資料被註釋了,看似base32,等我們base32解碼出來,再來個base64解碼
select * from user where username = '$name'
得到了這個sql語句,意思是我們需要傳入個name變數,然後我們構造payload,因為我們需要post傳參,於是我們採用bp抓包
我們如果給name的值不是admin,然後提示錯誤,wrong user!
傳admin,提示wrong pass!
我們把admin 放到第二個位置 不報錯
這樣我們就得到第二個欄位就是我們的username欄位
緊接著下一步,我也不太會於是就看了大佬部落格說有md5提示,我也沒發現,
於是盲從後臺登入邏輯
<?php$row; $pass=$_POST['pw']; if($row['username']==’admin’){ if($row['password']==md5($pass)){ echo $flag; }else{ echo “wrong pass!”; }} else{ echo “wrong user!”;}
在執行password框中的內容等於md5(框中的內容),如果相等則密碼正確,於是我們構造吧
password:adc
md5(adc):225e8a3fe20e95f6cd9b9e10bfe5eb69
於是構造payload:name=1' union select 1,2,'225e8a3fe20e95f6cd9b9e10bfe5eb69'#&pw=adc
得到flag