728x90
pwnable.kr 2 - collision |
20byte 길이의 비밀번호를 맞추는 문제이다
내가 20byte 길이의 문자열을 입력하면 check_password 함수를 거치게 되고 그 반환값이
hashcode(= 0x21DD09EC ) 와 같아야한다
check_password 함수를 보면 문자열이 정수형으로 형변환이 일어난다. 즉 내가 입력한 20byte 길이의 문자열이
정수형으로 바뀌면서 4바이트씩 묶이게 되는것이다
따라서 for문이 의미하는 것은
내가 입력한 passcode를 4바이트씩 묶어서 5번 더하겠다는 뜻이다.
여기까지 정리하면 4바이트씩 5번 더했을때 0x21DD09EC 가 나오는 20byte의 passcode를 입력하면 된다.
계산하면 4번의 0x6c5cec8 와 한번의 0x6c5cecc가 필요하다.
리틀엔디언 방식으로
0xc8cec56c * 4개 +0xcccec56c 를 넣어주면 된다.
./col `python -c 'print "\xcc\xce\xc5\x06" +"\xc8\xce\xc5\x06"*4'` |
728x90
'wargame > pwnable.kr' 카테고리의 다른 글
[포너블] pwnable.kr 6 - random (0) | 2022.02.07 |
---|---|
[포너블] pwnable.kr 5 - passcode (0) | 2022.02.07 |
[포너블] pwnable.kr 4 - flag (0) | 2022.02.07 |
[포너블] pwnable.kr 3 - bof (0) | 2022.02.06 |
[포너블] pwnable.kr 1 - fd (0) | 2022.02.06 |
댓글