- 20byte를 받아서 check_password함수에서 정수형 포인터를 통해 4바이트씩 읽어서 더하는 것을 알 수 있었음
- 끝에서 hashcode랑 비교를 하게 되는데, 0x21DD09EC랑 일치해야 플래그 값이 출력됨
- 0x21DD09EC를 임의로 5등분 하게 되면, 이런식으로 나옴
- 06C5 CEC8 / 06C5 CEC8 / 06C5 CEC8 / 06C5 CEC8 / 06c5 CECC
- 그러면 이걸 더해서 20바이트 맞춰주면 될거라 생각함
- 근데 여기서 뻘짓 했던게 ascii 테이블에 있는 문자로 치환해서 넣어야 겠다라고 생각해서 조금 뻘짓을 하게됨..
- 일단 어셈블리 상으로 보면 check_password+39 부분에서 ebp-0x8에 eax를 다 더하고 나중에 그 값을 eax로 옮긴 뒤 리턴하는 것을 볼 수 있음
- 따라서 4바이트씩 읽은 것을 다 더해서 리턴해준다라는 문제
- 마지막에 어떤식으로 인풋을 넣을지 계속 고민하다가 결국엔 다른 블로그 찾아봄
- 파이썬으로 쉽게 해결가능했었다!..
- 원리는 다 알았지만 어떤식으로 파이썬을 활용해야하는지 좀 더 알게됨
'시스템 해킹 > pwnable' 카테고리의 다른 글
[pwnable.kr] passcode (0) | 2024.05.09 |
---|---|
[pwnable.kr] dragon (0) | 2023.07.07 |
[pwnable.kr] fd (0) | 2023.05.21 |
[DreamHack] oob1 (0) | 2023.05.21 |
[DreamHack] SSP01 (0) | 2023.05.13 |