본문 바로가기
워게임/FTZ

FTZ - level17

by meanjung 2021. 7. 26.

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

댓글