Wargame/Pwnable.kr
[Toddler's Bottle] - collision
Anatis
2021. 3. 26. 00:35
이번 문제는 collision이라는 문제이다 collision이 사전적 의미로 충돌인데 충돌하면 Hash가 생각난다.
생각이 맞는지 ssh로 접속해서 확인해 보자.
소스 코드를 보면 hashcode가 있고 check_password 함수가 보이는데. 입력한 값을 5번 더해서 리턴하는데
리턴 값과 hashcode가 같으면 flag를 읽을 수 있다. 그러면 hashcode값 0x21DD09EC / 5를하면 0x6C5CEC8이다.
이 값을 다시 5번 더하면 0x21DD09E8이 나오는데 원래의 hashcode 값보다 4바이트가 부족하다. argv를 입력할때
(0x6C5CEC8 * 4) + 0x6C5CECC를 해주면 조건문이 참이기 때문에 flag 값을 볼 수 있다.
from pwn import *
user = 'col'
host = 'pwnable.kr'
port = 2222
password = 'guest'
payload = p32(0x6c5cec8) * 4
payload += p32(0x6c5cecc)
s = ssh(user, host, port, password)
p = s.process(['./col', payload])
p.interactive()