TERRY's Note

CTF関連、解いた問題、勉強の記録などなど

L33t H4xx0r - ABCTF

Web系の問題
ctftime.org


以下のリンクが与えられる
http://yrmyzscnvh.abctf.xyz/web6/

CTFの問題でよくあるパスワードの入力ボックスとSubmitボタンのみのページが出現する

何はともあれソースを表示してみる
下の方に以下の文章を発見

<!-- source at source.txt -->

詳しい事はsource.txtを見れば分かるみたい
URLを以下のように変更して覗いてみる

view-source:http://yrmyzscnvh.abctf.xyz/web6/source.txt

PHPソースコードが出現した

<?php
	$FLAGWEB6 = (file_get_contents("flag.txt"));
	$PASSWORD =  (file_get_contents("flag.txt")); //haha


	if(isset($_GET['password'])){
	
	if(strcmp($PASSWORD, $_GET['password']) == 0){
			$success = true;
		}
		else{
			$success = false;
		}

	}
	else {
		$success = false;
	}
?>

正解PASSWORDがFLAGになっていて、$_GETで入力されたパスワードを取得
strcomp()で二つを比較して、一致している場合は成功としている

色々と調べてみたところ、この部分に問題があることが分かった

if(strcmp($PASSWORD, $_GET['password']) == 0){

$_GETというのは、URLからデータを受け取るメソッドなのだが
passwordとして配列なんかを渡すと、strcmp()で比較した場合NULLを返す
さらに、==で比較した場合は

NULL == 0

をtureとするらしい

これらを利用してURLに以下のように記述したら、FLAGが出現した

http://yrmyzscnvh.abctf.xyz/web6/?password[]=sample