Description

Category: Pwnable

Source: pwnable.kr

Points: 30

Author: Jisoon Park(js00n.park)

Description:

Daddy told me about MD5 hash collision today.

I wanna do something like that too!

Write-up

MD5 hash가 어쩌구 하지만 MD5와는 상관 없는 문제이다. 코드를 보면, 간단한 custom hash 알고리즘이 있고, 의도된 hash값을 만들어내는 문제이다.

main() 함수를 보면 argv[1]로 받아온 20byte의 문자열에 대한 hash를 계산하는데, 이 hash는 입력받은 문자열을 4byte씩 잘라서 정수 형태로 합산한 값이다.

정수 5개를 더해서 어떻게든 0x21DD09EC를 만들어 보자.

strlen() 함수를 이용해서 길이를 검사하므로, 문자열 중간에 0x00은 넣을 수 없다. 대신, 0x01을 16개 넣으면 0x01010101이 4번 들어가서 0x04040404가 될테니, 0x21DD09EC에서 0x04040404를 뺀 0x1DD905E8을 마지막에 넣어주면 된다.

little endian을 고려하여 아래와 같이 넣어주면 간단히 flag 값을 확인할 수 있다.

Flag : daddy! I just managed to create a hash collision :)

'writeups > Pwnable' 카테고리의 다른 글

Pwn4  (0) 2019.11.23
Pwn3  (0) 2019.11.23
Pwn2  (0) 2019.11.23
Pwn1  (0) 2019.11.23
fd  (0) 2019.11.23

+ Recent posts