write-up/pwnable
[pwnable.kr] collision
★ 문제 분석
- 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 |
댓글