#Main

 

 

#압축 파일 다운로드/해제 후 분석

 - 똑같아 보이는 파일 두개가 나온다.

 - zip파일 이름은 compare인데 '비교하다'라는 뜻이다.

   이미지 두개를 비교하는 건 아닌 것 같으니 메타데이터를 비교해보겠다.

 

 

#메타데이터 비교

 - 역시나.. 틀린게 있다.

 - HxD에서 데이터 비교는 상단 메뉴 - 분석 - 데이터비교 - 비교 이다.

 

 

#차이나는 헥스값을 일단 8개만 모았다.

파란색 : 1번파일

빨간색 : 2번파일

 - 4E 48 71 61 CC 63 D9 6B

 

 


#알파벳으로 변환

 - 2번파일에 해당하는 짝수번째 헥스값들이 H a c k를 의미한다. 즉, 차이나는 헥스값중 2번파일의

   헥스값이 플래그일 가능성이 높다.

 

 

#파이썬코드 작성

 

'HackCTF > Forensic' 카테고리의 다른 글

HackCTF 나는 해귀다 - [150]  (0) 2021.08.31
HackCTF Terrorist - [200]  (0) 2021.08.30
HackCTF Magic PNG - [150]  (0) 2021.08.30
HackCTF 세상에서 잊혀진 날 찾아줘! - [150]  (0) 2021.08.30
HackCTF Secret Document - [150]  (0) 2021.08.30

#Main

 - 두번째 조건문에 60*60*24*30*2보단 커야한다고 한다.

 -> 5184000

 

 - 모든 조건을 충족하면 해당 숫자만큼 기다린 후 flag를 출력하는데, 5184000초를 기다릴리는 없으므로

   is_numeric 함수의 취약점을 찾아본다.

 

 

#is_numeric() 취약점

 - 헥스값은 대입 시 첫번째 조건에서 걸리므로, 상위 버전을 찾아보았는데

   '1337e0' is numeric이라는 문구가 보인다. 즉, 10의 거듭제곱을 사용가능하다.

 

 참고자료 : https://www.php.net/manual/en/function.is-numeric.php

 

#source code

 - 먼저 5184000을 e를 사용해 바꿔준다.

   5184000/(10*6) = 5.184이므로, 5.184e6이다.

 

   소스코드를 보면, 위의 if문에서 검사를 하고,(5.184e6 = 5.184000)

   마지막 else문에서 (int)로 강제 형변환을 한다.(5.184e6 = 5)

   즉, 5초를 기다리면 플래그가 출력될 것이다.

 

#end

'HackCTF > Web' 카테고리의 다른 글

HackCTF Home - [200]  (0) 2021.08.30
HackCTF Input Check - [150]  (0) 2021.08.29
HackCTF 마법봉 - [100]  (0) 2021.08.28
HackCTF Login - [100]  (0) 2021.08.26
HackCTF ReadFile - [100]  (0) 2021.08.25

+ Recent posts