링크에 들어가면 다음과 같은 사이트가 나온다
이 문제는 extract 취약점을 이용하는 문제이다
extract 로 내가 원하는 값으로 변수 내용을 바꿀 수 있다
말로는 이해하기 어려우니 문제를 풀어보자
<?php
$filename = 'secret.txt';
extract($_GET);
if (isset($guess)) {
$secretcode = trim(file_get_contents($filename)); // secret.txt에 내용을 가져와 공백을 없애고 $secretcode안에 넣는다
if ($guess === $secretcode) { // $guess 랑 $secretcode가 같으면 플래그 출력
$flag = file_get_contents('flag.txt');
echo "<p>flag is"." $flag</p>";
} else {
echo "<p>비밀 코드는 $guess (이)가 아닙니다. </p>";
}
}
?>
코드를 그대로 가져오고 유심히 봐야할 곳을 주석으로 설명해놨다
우리는 secret.txt 안에 내용을 모르기 때문에 $secretcode를 알기 힘들다
그래서 extract 를 이용해 $filename 를 바꿔 $secretcode 를 바꾸는 것이다
첫번째 주석을 보자
$filename을 바꿔주면 우리가 바꿔준 이름의 파일 내용을 가져와야 하는데
파일 이름이 없기 때문에 $secretcode 에는 아무런 값이 들어가지 않는다
그래서 두번째 주석을 검사할때 guess에 아무런 값을 주지 않으면 풀릴 것이다
'HackCTF > web' 카테고리의 다른 글
HackCTF - login (0) | 2021.07.09 |
---|---|
HackCTF - Read File (0) | 2021.07.09 |
HackCTF - 보물 (0) | 2021.07.08 |
HackCTF - Button 문제 (0) | 2021.07.08 |
HackCTF - Hidden (0) | 2021.07.08 |