반응형
HackCTF 문제 풀이 / Web - Time (150)
https://ctf.j0n9hyun.xyz/challenges#Time
Web - Time(150) 문제를 풀어보도록 하겠습니다.
우선 아래 링크에 접속해 보겠습니다.
접속해 보면 아래와 같은 php 코드가 출력됩니다.
아래 코드를 분석해 보겠습니다.
먼저, time이라는 변수를 가져와, is_numeric() 함수를 통해 이 변수의 값이 숫자인지 검사합니다.
그리고 그 숫자가 60 * 60 * 24 * 30 * 2 의 숫자보다 크거나 같고,
60 * 60 * 24 * 30 * 3의 숫자보다 작거나 같은 숫자가 입력되어야 마지막 else문으로 진입할 수 있습니다.
하지만, else 문으로 들어가면, 그 변수의 값으로 sleep() 함수를 호출하고, flag를 출력하는데,
그 변수의 값이 2달, 3달에 대한 초가 입력이 되기 때문에, 2달, 3달은 기다려야 flag 값을 가져올 수 있습니다.
이때, php의 취약점을 이용하여 문제를 해결할 수 있습니다.
60 * 60 * 24 * 30 * 2 = 5184000 입니다.
지수형으로 표현해보면 5.18400e6 입니다.
php에서는 5.18400e6를 (int) 형으로 형변환 할때, 소수점 이하는 잘라버리기 때문에 5가 됩니다.
그러면 결국에는 sleep(5)가 되어 5초 이후에 flag를 확인할 수 있습니다.
반응형
'WarGame > HackCTF' 카테고리의 다른 글
HackCTF 문제 풀이 / Web - Home (200) (0) | 2021.09.27 |
---|---|
HackCTF 문제 풀이 / Web - Input Check (150) (0) | 2021.09.26 |
HackCTF 문제 풀이 / Web - 마법봉 (100) (0) | 2021.09.02 |
HackCTF 문제 풀이 / Web - Read File (100) (0) | 2021.08.31 |
HackCTF 문제 풀이 / Web - Guess me (100) (0) | 2021.08.30 |