HINT : attackme의 소스코드
이번 문제 역시 bof이며, 이전 문제와 다른점은 check가 포인터 형 인 점이다.
우선 gdb로 attackme를 분석해보자.
ebp-16이 가리키고 있는 값을 갖고와 eax에 넣은 다음.
eax가 가리키고 있는 주소의 값과 deadbeef를 비교하게 된다.
따라서 ebp-16가 가리키고 있는 주소가 deadbeef를 가리키도록 하면 된다.
처음에는 환경변수로 deadbeef를 저장해 놓고,
ebp-16에 환경변수가 들어있는 주소를 넣어보았지만,
실행할때마다 바뀌는 주소값 때문에 쉘을 딸 수가 없었다.
좀 더 생각해보면 0xdeadbeef가 하드 코딩 되어있기 때문에 분명 메모리에 있을 것이다.
0xdeadbeef와 cmp하는 부분 다음 주소를 확인해보면 deadbeef가 들어있는 것을 확인 할 수 있다.
이 주소 0x80484b2를 check 위치에 넣어주면 된다.
거리는 이전 문제와 같으므로 "a"40 + 주소를 하면 될 것 같다.
이제 level16으로 올라가 보자.
[Write-up] Level 17 (0) | 2019.12.07 |
---|---|
[Write-up] Level 16 (0) | 2019.12.07 |
[Write-up] Level 14 (0) | 2019.12.07 |
[Write-up] Level 13 (0) | 2019.12.07 |
[Write-up] Level 12 (0) | 2019.12.07 |
댓글 영역