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()