Information Security ˗ˋˏ ♡ ˎˊ˗

Security/WebHacking

[HackCTF Web] Guess me

토오쓰 2019. 11. 28. 02:54

문제

 

 

풀이

아무 값이나 넣어서 제출하기를 눌렀을 때, 나오는 모습이다.

 

처음 문제를 보았을 때, 모르는 개념이 많아서 먼저 함수나 php코드 형태를 검색해봤다.

 

PHP 개념

1. extract($_GET)

: PHP에서는 일반적으로 $_GET[aaa]를 $aaa로 쓸 수 있다. 하지만 서버 설정이나 버전에 따라서 반드시 $_GET[aaa]를 써야 하는 경우가 있다. 이 때 본문에 $_GET[aaa] 대신 $aaa가 쓰여있다면 오작동을 일으키게 된다.
extract함수는 배열의 값을 꺼내주는 역할을 한다. 즉 $_GET[aaa], $_GET[bbb] 가 있다면 $aaa, $bbb로 쓸 수 있도록 만들어준다.

2. trim 함수

:  시작과 끝 문자열에서 공백(또는 문자)을 제거하는 trim 함수

3. file_get_contents 함수

: 전체파일을 문자열로 읽어들이는 PHP 함수, 로컬파일, 원격파일 모두 가능

4. isset 함수

: 선언이 되어있으면 true, 선언이 되어있지 않으면 false

 

$filename의 값을 'secret.txt'로 선언한 뒤에 extract($_GET);을 이용해 값을 받고 있는 것을 알 수 있다.

문제를 풀기 위해서 $filename의 값을 바꾸고, $filename의 값을 아무 값으로 변경한다면 해당 파일은 존재하지 않을 것이므로 guess에 아무 값도 입력해주지 않는다면 $guess===$secretcode가 true되어 flag가 나올 것이다.

 

: http://ctf.j0n9hyun.xyz:2030/?filename=1&guess=

 

 

성공적으로 flag 값이 나오는 것을 볼 수 있다.

 

 

참고

https://bbolmin.tistory.com/53

 

php extract()함수에 대하여 . .-

extract()함수는 배열 속의 키값을 변수화 시켜주는 함수이다. 예를 들어 $a[x] = 111; $a[y] = 222; 에서 extract(a) 할 경우 x = 111, y = 222가 되는 것이다. -> 그러면 소스에 extract($_GET)이 있다면??? G..

bbolmin.tistory.com

 

'Security > WebHacking' 카테고리의 다른 글

[HackCTF Web] Login (SQL Injection)  (426) 2019.11.28
[HackCTF Web] Read File  (437) 2019.11.28
[HackCTF Web] 보물  (422) 2019.11.28
[HackCTF Web] Button  (431) 2019.11.20
[HackCTF Web] Hidden  (272) 2019.11.19