상세 컨텐츠

본문 제목

15. giant -> assassin

Pwnable Write-Up/02.hackerschool L.O.B

by RACC8N 2020. 3. 11. 10:57

본문

ret 주소에 \xbf, \x40이 오면 안되므로 stack과 rtl을 사용할 수없다.

 

그럼 어떻게 해야할까.?

 

중간 단계를 만들면 된다.

 

ret 주소에 RET 명령어 주소를 넣고 그 뒤에 쉘코드가 있는 주소를 넣어준다면 어떻게 될까?

 

이것이 바로 RET Sled 기법이다. 

 

RET의 내부 동작은 pop eip, jmp eip 이다. 

 

따라서 RET을 연속적으로 호출함으로 콜 스택을 조작할 수 있다.

 

우선 환경변수는 사용가능하므로 환경변수에 SHELLCODE를 넣어주자.

 

쉘코드의 위치를 찾았다. 그럼 RET명령어 주소를 찾아보자.

 

해당 주소를 사용하면 된다.

 

그럼 buf + sfp + RET +env(shellcode) 를 하게되면, RET명령을 한번 더 실행시키기 때문에 eip에는 쉘코드 실행 주소가 들어가고 jmp eip로 인해 쉘코그가 실행된다.

 

 다음 단계로 넘어가보자.

'Pwnable Write-Up > 02.hackerschool L.O.B' 카테고리의 다른 글

17. zombie_assassin -> succubus  (0) 2020.03.11
16. assassin -> zombie_assassin  (0) 2020.03.11
14. bugbear -> giant  (0) 2020.03.11
13. darkknight -> bugbear  (0) 2020.03.10
12. golem -> darknight  (0) 2020.03.10

관련글 더보기

댓글 영역