HINT : attackme의 소스코드
소스코드를 보면 void형 함수 call이 가리키고 있는 문자열을 printit에서 shell로 바꿔주면 될 것 같다.
우선 gdb로 확인해 보자.
상자 부분을 보면 0x8048500을 ebp-16에 mov한다. 저 주소가 무엇인지 확인해 보자.
확인해보니 printit함수의 시작 주소이다. 여기가 *call = printit 하는 부분 인 것 같다.
그러면 ebp-16에 printit의 시작 주소가 아닌 shell의 시작 주소를 넣어보자.
shell함수의 시작 주소는 0x080484d0 이므로 이 값을 fgets을 통해 ebp-16에 넣어주면
쉘을 딸 수 있었다.
이제 level17으로 올라가 보자.
[Write-up] Level 18 (0) | 2019.12.09 |
---|---|
[Write-up] Level 17 (0) | 2019.12.07 |
[Write-up] Level 15 (0) | 2019.12.07 |
[Write-up] Level 14 (0) | 2019.12.07 |
[Write-up] Level 13 (0) | 2019.12.07 |
댓글 영역