해커스쿨 level16풀이 입니다.
중복되는 자료 생산도 싫고(그리고 귀찮기 때문에!!)
자세한 풀이는 [http://geundi.tistory.com] 여기를 참조하시기 바랍니다.
------------------------------------------------------------------------------
풀이 :
gdb로 열어보면 함수를 실행하는 부분이 call이라고 있는데 이부분이 0x08048500으로 기본세팅이 되어있다.
그리고 힌트를 살펴보면 level15와 동일하게 생긴 것을 알 수 있다.
변수+포인터(void)+버퍼(20byte) 이를 통해 41byte를 입력하면 void포인터에 접근할 수 있음을 알게되고 여기에 shell 함수의 주소를 적으면 자연스럽게 문제를 해결할 수 있다.
shell함수의 주소는 gdb를 통하여 알아내었다.
(gdb의 요소가 삽입되어서 주소가 바뀔수도 있는데 통했다.
아마도 문제서버가 페도라 옛날버전이라 그런거 같다.
objdump를 사용한다면 정확한 주소를 알 수 있다.)
------------------------------------------------------------------------------
즐거운 공부되세요.ㅎ
'코드^학습 > 워게임풀이(약간)' 카테고리의 다른 글
해커스쿨 level17 풀이 (0) | 2013.10.09 |
---|---|
해커스쿨 level15 풀이 (0) | 2013.10.09 |
해커스쿨 level14 풀이 (0) | 2013.10.09 |
해커스쿨 level13 풀이 (0) | 2013.10.09 |
level1부터 ~ level10까지의 풀이 링크 (0) | 2013.01.30 |