write-up/pwnable

[pwnable.kr] collision

여니두 2019. 9. 26.

★ 문제 분석

- argc가 2개 이상이어야 한다.

- argv[1]가 20byte이어야 한다.

- hashcode와 check_passwrod(argv[1])이 같아야 한다.

 

check_password() 함수를 보면, 사용자가 입력한 20byte를 4byte 단위로 (int *) 5번 읽어들여

res에 더한 값을 리턴한다.

 

도달해야 하는 hashcode 값인 0x21dd09ec를 일단 5로 나누어보았다.

 

0x21dd09ec / 5 = 0x6c5cec8

 

이걸 다시 검산해보자.

 

0x6c5cec8 * 5 = 0x21dd09e8  

 

검산 결과를 보면 원래 hashcode 값과 4만큼 차이가 나는 것을 알 수 있다.

 

따라서 페이로드를 다음과 같이 짰다.

 

'write-up > pwnable' 카테고리의 다른 글

[pwnable.kr] passcode  (0) 2019.09.29
[pwnable.kr] bof  (0) 2019.09.28
[pwnable.kr] fd  (0) 2019.09.23
[LOB] LOB TIP  (0) 2019.09.15
[LOB] level 1: gate  (0) 2019.09.14

댓글