ctfのお勉強 ksnctf #32 Simple Auth

ksnctfを解いてみた

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が表示されます。