일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- php 해석
- webhacking 14
- 쿠키는 맛있음
- repl.lt
- webhacking.kr
- aiohttp
- js 문제
- webhacking.kr 14
- http.client
- HTML
- hacking
- 쿠키 사용법
- php
- urllib.request
- web cookie
- webhacking
- 비주스
- hidde flag
- js code 해석
- php code 해석
- php base64 encode
- robot image
- Visual sutdio
- js 코드
- js 해석
- httplib2
- faster_than_requests
- Web
- php code
- webhacking 6
- Today
- Total
it 공부 일기 - 워게임 ctf 풀이 및 언어 강좌모음
probgame Extract Function 문제 풀이 본문
워게임사이트의 Extract Function 문제를 한번 분석해보면
이렇게 php 소스코드와 Hello zzzzz 가 출력되어있는것을 볼 수 있다.
해당 문제의 의도를 파악하자면 아까 Extract 함수라고 언급이 되어있었는데
php 의 Extract 라는 함수는 만약 변수명이 노출되고 클라이언트가 임의적으로 값을 변경시켜 적용시킬 수 있는 환경이라면 충분히 취약한 환경이 될 수도있다.
현재 문제의 경우 php 소스코드의 변수명을 노출시켰고
$_GET 배열로 extract 함수를 실행한것을 볼 수 있다.
$_GET 에 임의의 값을 전달하기 위해서는
?GET=GET 이런식으로 이름과 값을 전달하면 된다.
먼저 플래그를 얻기 위해서는
이 if를 만족해야되는데
일반적으로 ?CheckOne=0x2dbfadef나 ?CheckOne=2dbfadef를시도한다면 (int) 의 형변환에 의하여
우리가원하는대로풀이가되지않는다.
왜냐하면 php 의 경우
$a = "111";
echo (int)$a; 를 하면 인트형으로 변환되어 정상적으로 111이 출력도지만 만약 문자열이 있을시에 거기까지 짤라서 반환을 하게 된다.
예시를 들자면
이렇게 나오게 된다는것이다.
0xdbf 는 16진수이지만 (int)는 전체적이 아닌 한글자씩 판단하여
문자로 인식하고 그 뒤의 모든 글들이 짤리게 되버린다.
그러므로 올바르게 풀이를 하기 위해서는
$CheckTwo 의 변수에 있는 0x2dbfadef 16진수를 10진수로 바꿔 ?CheckOne=767536623 이런식으로 넣어주면
이렇게 플래그가 출력된것을 볼 수 있다.
'probgame.com' 카테고리의 다른 글
probgame openfile 문제 풀이 (0) | 2021.01.13 |
---|---|
probgame Url parsing (0) | 2021.01.13 |
probgame Simple Sqli 문제 풀이 (0) | 2021.01.13 |