정보보안/워게임
[HackCTF] "Guess me" 문제풀이
Ye0ngJae
2022. 3. 8. 17:35
728x90
문제
풀이
더보기



Secret 코드를 맞추면 flag를 뱉어낸다고 한다. 입력창과 제출버튼이 하나 있고, 문제 코드로 보이는 코드가 보이고 있다. 우선 코드를 살펴보자
<?php
$filename = 'secret.txt';
extract($_GET);
if (isset($guess)) {
$secretcode = trim(file_get_contents($filename));
if ($guess === $secretcode) {
$flag = file_get_contents('flag.txt');
echo "<p>flag is"." $flag</p>";
} else {
echo "<p>비밀 코드는 $guess (이)가 아닙니다. </p>";
}
}
?>

Secret.txt을 긁어와 secretcode에 넣고 입력값이 scretcode와 같으면 flag를 출력하는 코드이다. extract($_GET) 함수를 보고 순간 php의 extract 취약점이 떠올랐다.

php extract 취약점을 하기 위해 URL 파라미터 뒤에다 ?filename=& 을 붙이면 php extract 취약점이 발생하게 된다.

Flag 값이 나오게 된다
728x90