
문제로 들어가면 php 문이 나옵니다!
3가지 조건이 있네요 :D
1. 시간은 숫자만 됩니다!
2. 시간이 너무 짧습니다!
3. 시간이 너무 깁니다!
그럼 위의 시간을 계산해 봅시다!
60*60*24*30*2 = 5,184,000
60*60*24*30*3 = 7,776,000
사이의 시간을 넣으면 풀릴까 해서 넣어봤습니다 !

5184001을 넣으면 어떻게 될까요?
11번째 줄 sleep 함수로 인해 5184001초를 기다려야 flag가 출력이 됩니다 : (
그 때까지 기다리기엔 무리가 있겠죠..?
그럼 어떻게 풀어 나가야할까요 ㅇㅅㅇ?
4번줄에 is_numeric 함수가 보이시나요 :D
is_numeric 함수는 변수가 숫자인지 아닌지를 판단을 해주는 함수입니다!
https://www.php.net/manual/de/function.is-numeric.php
PHP: is_numeric - Manual
If you want detect integer of float values, which presents as pure int or float, and presents as string values, use this functions: PHP_INT_MAX) { return false; } return is_float(val)?false:pregmatch(′ ((?:\+|−)?[0−9]+)~', $val);}funct
www.php.net
자세한건 php 정식 사이트에서 보시기 바랍니다 :D
위의 사이트에서 보면
지수형태도 True로 반환되는거 보이시나요 :D
그리고 11번째 줄에서 sleep 함수 안에 int로 형변환되는 것을 본다면 "지수형태로 보내면 되겠구나!" 생각이 들겠죠?
왜냐하면 int형으로 인해서 뒤의 소수점이 다날라가버리기 때문이죠 :D
그럼 어떻게 보내줘야 할까요!
"5.184001E+6"
을 입력하게되면 flag가 5초후에 등장하게 될겁니다 :D
왜냐하면 6,8번 째 줄은 지수형으로 나타내서 5184001이 되어 통과하게 되고
11번째 줄에선 int 형변환으로 인해 5.184001E+6 => 5로 변환되기 때문이죠 :D
그럼 다음 문제에서 뵙도록 하겠습니다!
'CTF > HackCTF' 카테고리의 다른 글
Web - Cookie (0) | 2020.02.07 |
---|---|
Web - 가위바위보 (0) | 2020.02.03 |
Web - 마법봉 (0) | 2020.01.23 |
Web - Read File (0) | 2020.01.21 |
Web - Guess me (0) | 2020.01.20 |