guess me 들어갔을때에 소스코드다. secret.txt 에서 secretcode를 불러와 맞으면 flag를 출력한다.
[extract]
extract : php에서 배열의 키값을 변수화해주는함수
$_GET 는 딕셔너리형태로 key:value 형태로 값이 들어가는데 키값을 변수화한다는건
key값인 guess를 php내부에서 $guess로 변수처럼 사용할수있다.
extract함수에는 extract함수를 사용하기전에 이미 정의된 변수들을 overwrite할수있는 취약점이있다.
이를 이용해 우리는 extract함수 사용하기전에 정의된 filename 변수를 조작할수있다.
[문제풀이]
filename을 조작해 없는파일을 열어 읽게만들면 $secretcode에는 아무내용도 없을것이다.
그럼 guess에도 아무값도 넣어주지않으면 두 변수가 같게되어 flag가 출력된다.
최종 payload = http://ctf.j0n9hyun.xyz:2030/?guess=&filename=snwo