문제 설명을 보면 md5 함수가 나와 있다.

 

문제 페이지를 보면 password를 입력하는 입력란이 있고, 페이지 소스 코드를 볼 수 있다.

 

소스 코드를 보면 md5 함수에서 취약점이 발생한다.

md5  함수 옵션의 기본값은 false 인데, true 옵션을 사용하게 되면 해시 값을 바이너리 형식으로 반환하게 된다.

 

또한 sql에서 패스워드의 값이 '=' 의 형태로 들어가게 되면 참 으로 인식하고, php내에서는 md5 해시한 값이 바이너리 형식으로 인식하기 때문에 어떤 값을 md5 해시한 결과가 '=' 인 값을 찾아야 한다.

파이썬으로 코딩해서 찾아보면 1839431 이라는 값을 찾을 수 있다.

 

import hashlib

 

for i in range(0,1000000000):

    if b"'='" in hashlib.md5(str(i).encode()).digest():     # bytes형태로 바꿈

        print('Found: {}'.format(i))

 

찾은 값을 문제 페이지의 password 값을 입력하면 flag를 얻을 수 있다.

 

알게된 점 : php에서 md5함수의 옵션이 true로 설정되게 되면 취약점이 발생한다.

md5함수의 기본값 옵션은 false 이다. 

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] strcmp  (0) 2019.09.02
[Wargame.kr] DB is really GOOD  (0) 2019.09.02
[Wargame.kr] fly me to the moon  (0) 2019.08.27
[Wargame.kr] WTF_CODE  (0) 2019.08.27
[Wargame.kr] login filtering  (0) 2019.08.25

+ Recent posts