ctfのお勉強 ksnctf #32 Simple Auth
ksnctfを解いてみた
#32 Simple Auth
ログインページとphpのソースコードがある。
まずはソースコードを見てみると、postを取り出して値をそのまま比較している。
if (strcasecmp($_POST['password'], $password) == 0)
"=="による緩やかな比較が0ということで
strcasecmpの返り値がFALSEか0か"0"かNULLか””あたりとなるとTRUEとなり突破できます。
仕様をグーグル先生に聞いてみることにします。
1. strcasecmpの仕様を調べる
strcasecmpの仕様を調べると、PHP5.3以降では引数エラー時にNULLを返す仕様に変更になっているようです。
(最新versionではどうなってるんでしょうか。。調べていません。。)
2. $_POSTの仕様を調べる
phpのPOSTの仕様を調べてみるとContributed Notesのところにヒントが。
PHP: $_POST - Manual
chromeデバッカで少し書き換えて、適当な文字列入れてsubmitするとFLAGが表示されます。