hint
이번에도 void (*call)() = printit; 에서 printit의 주소대신 쉘코드의 주소를 넣어주면 될 것 같다.
지금 생각나는 풀이는
환경변수에 쉘 코드 넣고 그 환경변수의 주소로 덮어쓰기
export MYSHELL=$(python -c 'print "\x90"*0x1000 + "쉘코드"')
엄청 큰 nop를 가지고 끝에 쉘코드가 붙어있는 환경변수를 만든다.
스택 구조상 환경변수는 가장 위쪽 주소인(0xc0000000)에 가깝게 위치할 것이며, 환경변수와 기타 등등 main함수가 시작되기 전까지 쌓인 스택이 그리 많지 않을 것이다.
그러므로 0xc0000000 - 0x1000 위치로 익스플로잇을 해주면 nop를 건너뛰고 쉘 코드가 실행될 것이다.
(나는 0xc0000000 - 0x1000 +1 위치로 했다. 그냥 해도 익스플로잇 된다.)
* 아이디어 출처 : jjy
'워게임 > FTZ' 카테고리의 다른 글
FTZ - level19 (0) | 2021.07.28 |
---|---|
FTZ - level18 (0) | 2021.07.26 |
FTZ - level16 (0) | 2021.07.26 |
FTZ - level15 (0) | 2021.07.24 |
FTZ - level14 (0) | 2021.07.23 |
댓글