-
lvl 16Wargame/HackerSchool FTZ 2019. 1. 24. 17:44
→ 힌트 정보를 확인한다. → 함수포인터다. → 우리가 원하는 것은 shell 함수를 실행하는 것이지만, 실제 메인 함수에선 shell 함수가 아닌 printit 함수만 실행한다. 하지만 void (*call)=printit; 부분의 call 함수 포인터가 가리키는 함수의 주소를 shell() 함수의 주소로 변경한다면 shell 함수를 실행할 수 있다. → gdb로 디버깅한다. [level16@ftz level16]$ gdb -q attackme(gdb)(gdb)(gdb) set disassembly-flavor intel(gdb) disas mainDump of assembler code for function main:0x08048518 : push ebp0x08048519 : mov ebp,esp0..