#Main

 - 머리말 : header를 보라는 것 같다.

 

 

#Request & Response 분석

 - 특별한건 보이지 않는다.

 

 

#구글링

 - 알고있는 정보로 구글링을 해본 결과, 'X-Forwarded-For' 이라는 XFF헤더가 나오는데, 

   해당 헤더는 클라이언트의 원 IP주소를 보기 위해 사용되는 헤더이다.

 

 형식 -> X-Forwarded-For: <client>, <proxy1>, <proxy2>

 출저 : https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/X-Forwarded-For

 

 

#Request 수정

 

 

#end

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

HackCTF Cookie - [300]  (0) 2021.08.30
HackCTF 가위바위보 - [200]  (0) 2021.08.30
HackCTF Input Check - [150]  (0) 2021.08.29
HackCTF Time - [150]  (0) 2021.08.28
HackCTF 마법봉 - [100]  (0) 2021.08.28

#Main

 

#flag 전송

 - flag라는 문자열에 필터가 걸린 것 같다.

 - GET 방식으로 전송하는 것을 알 수 있다.

 

 

#index

 - index를 보니 힌트가 있고, 입력값 검사는 배열이라고 한다.

 

 

#php - strcmp 취약점

 

 strcmp함수

 strcmp('A', 'B') : -1

 strcmp('A', 'A') : 0

 strcmp('C', '=B') : 1

  -> strcmp 함수는 문자열 비교함수인데,

      배열은 null, 즉 0이고 php 5.3~ php 7.34버전에선 느슨한 비교(==)에서 

      [String(flag) (비교) null(Array) = 0 ] : true이므로 성립하게 된다.

 

 

#배열로 flag값 넣기

 

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

HackCTF 가위바위보 - [200]  (0) 2021.08.30
HackCTF Home - [200]  (0) 2021.08.30
HackCTF Time - [150]  (0) 2021.08.28
HackCTF 마법봉 - [100]  (0) 2021.08.28
HackCTF Login - [100]  (0) 2021.08.26

#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

#Main

 

 

#Source Code

 - 코드 구조를 보니, 입력값을 sha1로 암호화한것과 "240610708"을 md5로 암호화한 것이 같아야 한다.

 - "=="가 미심쩍다.

 

 

#"=="취약점(Magic Hashes)

 - "=="비교는 '느슨하게 같다'라는 의미를 가진다.("==="가 보안상 뛰어남)

 -> 해당 비교에서 '0e'로 시작할 경우, 거듭제곱의 의미를 가지므로, 0e1234와 0e5678은 true가 된다.

     0e1234 : 0*10^1234 = 0 

     0e5678 : 0*10^5678 = 0

 

참고사이트 : https://www.whitehatsec.com/blog/magic-hashes/

 

 

#소스보기에서 주어진 값 "240610708"을 md5로 인코딩

 - '0e'로 시작한다.

 

 

#사이트에서 sha1 magic hashes 확인

 - '10932435112'의 해쉬값이 '0e'로 시작한다.

 

 

#end

 

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

HackCTF Input Check - [150]  (0) 2021.08.29
HackCTF Time - [150]  (0) 2021.08.28
HackCTF Login - [100]  (0) 2021.08.26
HackCTF ReadFile - [100]  (0) 2021.08.25
HackCTF Guess me - [100]  (0) 2021.08.21

+ Recent posts