Bace
wargame.kr - md5_compare 본문
문제는 다음과 같다.
다른 값으로 비교한다고 한다.
문제를 들어가보면 다음과 같이 나와있다.
소스
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 |