본문 바로가기
Wargame Write-Up/HackCTF

[HackCTF] (Web) Guess me 문제풀이

by snwo 2020. 3. 2.

 

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