Bace

wargame.kr - md5_compare 본문

wargame.kr

wargame.kr - md5_compare

Bace 2020. 2. 10. 08:09

문제는 다음과 같다.

다른 값으로 비교한다고 한다.

 

문제를 들어가보면 다음과 같이 나와있다.

 

소스

v1과 v2의 md5 값이 같으면 flag를 준다

근데 v1의 ctype_alpha는 알파벳만 입력해야하고, v2의 is_numeric은 숫자만 입력해야한다.

 

여기서 풀 수 있는 방법은 2가지가 있다.

 

첫번째는 임의의 문자열을 주고 while문으로 숫자값을 계속 대입하여 똑같은 md5 값이 나오게 하는 방법 (확률은 아주 극악)

#!/usr/bin/python
import hashlib

i = 0
text = 'flag'
enc = hashlib.md5()
enc.update(text)
encText = enc.hexdigest()

print encText
while True:
	enc2 = hashlib.md5()
	enc2.update(str(i))
	encText2 = enc2.hexdigest()
	
	if(encText == encText2):
		print text
		print i
		break
	else:
		i += 1

 

두번째는 매직해시를 이용하여 0e~~ 이렇게 시작하는 값들은 php에서 0으로 인식되므로 문자열을 md5 했을 때 0e~~ 가 나오는 값, 숫자를 md5 했을 때 0e~~가 나오는 값을 찾으면 된다.

이 때 잘 알려진 매직해시 값이 있다.

문자열로만 이루어진 매직해쉬 : QNKCDZO

숫자로만 이루어진 매직해쉬 : 240610708

 

첫번째 방법으로 풀려고 하다가, 너무 시간이 많이 걸려서 그냥 두번째 방법으로 풀었다.

다음과 같이 넣으면 flag가 뜬다.

 

# Auth

'wargame.kr' 카테고리의 다른 글

wargame.kr - type confusion  (0) 2020.02.10
wargame.kr - tmitter  (0) 2020.02.10
wargame.kr - strcmp  (0) 2020.02.08
wargame.kr - md5 password  (0) 2020.02.07
wargame.kr - fly me to the moon  (0) 2020.02.07