WriteUp/XCZ.kr

XCZ.kr : prob 18 (150pt)

vared 2020. 8. 4. 19:58
<?
$key = "Congratulations!</br>Key is ??????????????????";
$a = @$_COOKIE['c'];
$b = @$_GET['g'];
$c = @$_POST['p'];
if(empty($a) || empty($b) || empty($c)){exit ('wrong T.T');}
$d = $b . $a;
$e = $c;

function test($a){
$b = '';
    for($i=0; $i < strlen($a); $i++){
        $b = $b . ' - ' . ord(substr($a,$i,1));
    }
    return $b;
}
if(test($d)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($e) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33") 
#givemepassword or keyplz!
{
    echo $key;
}
else{
    echo 'wrong T.T';
}
?>

주어진 코드에 변수가 바코드로 되어있어서 치환했다.

 

일단

test($d) => $d = givemepassword  이고 test($e) => $e = keyplz!

이면 문제가 해결된다.

$d = $b.$a 이고

$e = c 이다.

다만 이해가 안가는 부분이 if 문 내부가 or 로 이루어져 있는데 왜 둘다 만족을 시켜줘야지만 통과가 되는지 모르겠다.

일단 기본적으로 a,b,c 모두 채워줘야 한다.

a 쿠키, b get['g'] c post['p']이다.

 

 

web_basic_problem_haha