pwnable.kr collision 시작!
col.c 파일을 읽어보자.
24 번째 줄의 if 문을 보면 hashcode 와 check_password( argv[1] ) 의 값이 같으면 flag 를 출력해주는 것을 알 수 있다. 그리고 19 번째 줄의 if 문을 보면 argv[1] 은 20 byte 이어야 한다.
check_password() 함수를 보면 입력받은 argv[1] 입력값을 int 인 4 byte 씩 5번으로 나눈 뒤 더해서 리턴해주고 있다. 즉, 입력한 값을 4 byte 씩 5등분하여 더한 값이 0x21DD09EC 이어야 한다. 0x21DD09EC 이 정확히 5등분 되지 않기 때문에 적당히 나누면 될 것 같다. 그래서 다음과 같이 나눌 수 있다.
0x01010101 * 4 + 0x1DD905E8
이 값을 입력하기 위해 python 을 사용한다. 그리고 입력할 때는 little endian 방식으로 입력해야 한다.
플래그가 출력되었다. 인증하러 가자.
성공!
'WarGame > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] bof (0) | 2020.05.05 |
---|---|
[pwnable.kr] fd (0) | 2020.05.05 |