pwnable.kr collision Writeup
pwnable.kr collision 의 풀이입니다.
Daddy told me about cool MD5 hash collision today. |
해쉬 충돌에 대한 문제라는 것 같습니다.
#include <stdio.h> |
check_password() 함수는 인자로 받아온 문자열을 int 형 포인터로 바꿔서 더하여 반환하고 있습니다.
그 반환된 값이 hashcode 와 같다면 flag 를 출력할 것입니다.
20byte 크기의 문자열을 int 형 포인터로 캐스팅하여 res 에 더하게 됩니다.
0x21DD09EC 를 5 로 나눈 값(0x6c5cec8)을 5 번에 걸쳐 넣어줍시다.
col@ubuntu:~$ ./col `python -c 'print "\xc8\xce\xc5\x06" * 5'` |
오답이라고 합니다.
>>> 0x21DD09EC - 0x6c5cec8 * 5 |
나머지로 4 가 남게 된다는 것을 알았습니다. 0x6c5cec8 * 4 + (0x6c5cec8 + 4)를 넣으면 해결될 것임이 자명합니다.
Solve
col@ubuntu:~$ ./col `python -c 'print "\xc8\xce\xc5\x06" * 4 + "\xcc\xce\xc5\x06"'` |