문제 소스코드

php로 코딩된 소스코드이다. 

is_numeric라는 함수와 sleep라는 함수가 보인다. 우선 저 함수가 어떠한 역할을 하는지부터 알아봐야겠다.

 

is_numeric 함수는 특정 데이터의 값이 숫자인지 아닌지를 확인하여 결과를 반환하는 함수라고 한다.

sleep 함수는 입력된 초만큼 PHP 코드의 실행을 지연시키는 역할을 하는 함수 라고 한다. 

 

다음으로 코드 로직을 분석해 보자.

 

1. 입력값은 숫자값만 받겠다.

2. 60x60x24x30x2 = 5,184,000 보다 작으면 시간이 너무 짧아서 불가능

3. 60x60x24x30x3 = 7,776,000 보다 크면 시간이 너무 길어서 불가능

 

그렇다는 건 5,184,000 <  6,000,000 <7,776,000 

중간에 있는 수를 입력하면 되지 않을까?라는 생각에 입력을 하여도 

sleep 함수때문에 9주 동안 컴퓨터를 켜놓고 있어야 한다. 

 

때문에 여기서 지수라는 녀석을 이용할 것이다.

지수 변환기는 이 사이트를 참조하면 된다. 

http://mwultong.blogspot.com/2008/01/exponential-scientific-notation-convert.html

 

지수 표기법 변환기, 과학적 숫자를 보통 숫자로 변환; Exponential Scientific Notation Convert

 

mwultong.blogspot.com

 

지수 표기법

https://seulcode.tistory.com/461

 

지수 표기법 (Exponential notaion) feat. vim: e+01, e-01

Exponential notation - 지수 표기법 feat. vim 지수 표기법은 많은 10의배수가 사용될 경우 모두 표시하기 어렵기 때문에 지수( e )를 사용하여 표기를 하는 방식이다. 가장 쉽게 vim에서 지수 표기를 해보

seulcode.tistory.com

 

위 내용을 토대로 6,000,000이라는 값을 지수 변환기를 이용하여 변환하게 되면 6e+6으로 변환되게 된다. 

지수값을 입력한 뒤 제출&nbsp;

입력을 하게 되면 

 

플래그 출력

플래그 값이 출력되며 문제를 해결할 수 있다. 

 

1. is_numeric 함수와 sleep 함수가 어떠한 동작을 하는 함수인지 알아야 함

2. 지수에 대한 개념

위 두가지만 알고 있으면 해당 문제는 풀 수 있다. 

 

'CTF > WEB' 카테고리의 다른 글

HackCTF_Home  (0) 2021.12.06
HackCTF_Input Check  (0) 2021.12.06
HackCTF_마법봉  (0) 2021.12.04
php 연산자 취약점  (0) 2021.12.04
HackCTF_Login  (0) 2021.12.04

+ Recent posts