들어가니 php 코드와 함께 문제가 주어졌다. 코드를 살펴보니 secret.txt 파일 안에 $secretcode 값과 입력하는 $guess 값이 일치해야 flag 값이 나오는 듯 하다.

 

임의로 'asdf'라는 값을 넣어보니 GET 방식으로 guess라는 파라미터 값에 'asdf' 값이 들어 있는것을 볼 수 있었다.

이때 소스코드를 보면 guess라는 파라미터에 값을 넣어 보냈으니 &구분자와 filename에 같은 값을 넣어 보내면 flag 값이 나오지 않을까 생각해보았다.

 

흠, 이렇게 푸는 문제가 아닌가보다.

 

그래서 코드를 다시한번 살펴보니 extract함수를 볼수 있었다.

extract함수는 전에 변수가 선언되어 있을 때, 변수를 한번 더 선언해 주면 초기 값으로 변경이 된다.

즉, url 뒤에 guess=&filename= 을 입력하게되면  filename 함수가 null로 초기화 되면서

guess 값과 secretcode 값이 동일한 값으로 인지하여 flag 값을 얻을 수 있는 것이다.

 

이렇게 flag 값은 HackCTF{3xtr4c7_0v3rr1d3ds_pr3vi0u5_kn0wn_v4r1abl35} 이라는 것을 알 수 있었다.

 


참조

 

https://j-ungry.tistory.com/10

 

extract() 함수

extract() 함수는 배열속의 키값을 변수로 만들어주는 역할을 한다 예를들어 $_GET[a]="Hello"; $_GET[b]="World"; extract($_GET); echo $a; echo $b; 라고하면 Hello World 가 출력되는 거다 취약점이 있다고 하..

j-ungry.tistory.com

 

'워게임 > HackCTF' 카테고리의 다른 글

[HackCTF] Web - Cookie 풀이  (0) 2021.08.14
[HackCTF] Web - 마법봉 풀이  (0) 2021.08.08
[HackCTF] Web - Login 풀이  (0) 2021.08.06
[HackCTF] Web - 보물 풀이  (0) 2021.07.24
[HackCTF] Web - / 풀이  (0) 2021.07.20
복사했습니다!