jhyoonzi 2017. 4. 14. 17:58


힌트를보면 프로그램이 정상적으로 흘러간다면


 hello there 을 출력하게 됩니다.


main함수를보면 정수형으로 crap을 선언하고


포인터 call 과 char형 buf가 20바이트 선언되었습니다.



gdb로 프로그램을 보면 풀어오던 문제랑 별다를게없습니다.


call에 printit 주소인 0x8048500가 저장이 됩니다.


공격코드는 nop * 40 + shell주소를 넣어주면 됩니다.



공격하기 전에 shell의 주소를 알아야합니다.


objdump를 통해 알아낼수있지만 gdb로 shell의 주소를 얻었습니다.



필요한게 모두 수집되었으니 공격했더니


level17의 쉘을 얻었습니다.