일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- web cookie
- http.client
- php code
- hidde flag
- aiohttp
- hacking
- webhacking.kr
- php
- 쿠키는 맛있음
- js 문제
- HTML
- php code 해석
- php 해석
- webhacking
- webhacking 14
- webhacking 6
- webhacking.kr 14
- Web
- 쿠키 사용법
- urllib.request
- httplib2
- php base64 encode
- js 해석
- Visual sutdio
- faster_than_requests
- js code 해석
- js 코드
- repl.lt
- robot image
- 비주스
- Today
- Total
it 공부 일기 - 워게임 ctf 풀이 및 언어 강좌모음
hackctf Guess me 문제 풀이 본문
Guess me 문제에 들어가보면은
php 소스코드가 나오는것을 볼 수 있다.
만약에 php 를 자주사용해봤다면 바로 알겠지만 혹시 모른다면은
file_get_contents 와 extract 함수를 알고있다면 충분히 풀이가 가능하다.
extract 함수는
www.php.net/manual/en/function.extract.php
안에 들어가는 배열의 키 와 값을 변수로 만들어준다고 보면은 된다.
<?php
$arr = array(
"key"=>"helloworld"
);
extract($arr);
echo $key;
?>
이런섹으로 "key" 이라는 이름에 helloworld라는 값이 있는 배열을
extract($arr); 이렇게 해버리면
$key 라는 변수가 생성되면서 helloworld라는 값이 들어가게 된다.
그러면은 이제 다시 소스코드로 가보면
if (isset($guess)) {
$secretcode = trim(file_get_contents($filename));
if ($guess === $secretcode) {
$flag = file_get_contents('flag.txt');
echo "<p>flag is"." $flag</p>";
$guess 라는 변수가 없는데 $guess 변수를 체크하고
$guess 변수와 file_get_contents 함수로 불러온 $secretcode 변수와 비교하는것을 볼 수 있다.
그러면 extract 함수를 이용해서
$_GET 변수에 키과 값을 전달해야되는데
PHP 같은 경우
$_GET 변수는
url?hello=world
이런식으로 전달이 가능하다.
그리고 $secretcode 변수를 조작하기 위해서는
$filename 을 조작해야된다.
왜냐하면 ?secretcode= 이런식으로 한다고해도 또 변수가 선언되기때문에 의미가 없다.
하지만 file_get_contents 라는 함수에서 $filename 이라는 변수를 받아 해당 파일을 불러오는데
만약에 없는 파일이면은 아무런 값이 반환되지 않아서 $filename 을 조작하면 $secretcode 라는 변수에는 아무런 값이 안들어가게 되는것이다.
그러면 이제
$guess 변수와 $secretcode 변수랑 똑같이 되기 위해서는
ctf.j0n9hyun.xyz:2030/?guess=&filename=
이런식으로 아무런 값을 넣지 않으면 FLAG 가 출력된다.
이 문제는 PHP 만 알고있으면 충분히 풀리는 문제이다. ͡~ ͜ʖ ͡°
FLAG is HackCTF{3xtr4c7_0v3rr1d3ds_pr3vi0u5_kn0wn_v4r1abl35}
'ctf.j0n9hyun.xyz' 카테고리의 다른 글
hackctf 마법봉 문제 풀이 (0) | 2021.01.13 |
---|---|
hackctf Login 문제 풀이 (1) | 2021.01.11 |
hackctf web / 문제 풀이 (0) | 2020.12.12 |
hackctf Button 문제 풀이 (0) | 2020.12.12 |
hackctf 보물 문제 풀이 (0) | 2020.12.12 |