상세 컨텐츠

본문 제목

16. assassin -> zombie_assassin

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

by RACC8N 2020. 3. 11. 12:31

본문

역시 stack, rtl을 사용 할 수 없다. 그리고 strncpy로 48바이트를 읽어온다. 

 

버퍼를 초기화하지 않으므로 버퍼에 쉘코드를 넣을 수 있다.

 

하지만 ret주소로 스택부분 \xbf가 오지 못하므로 방법을 찾아야한다. 

 

ebp를 변조하고, leave-ret 가젯위치로 ret을 덮어씌우면, 될 것 같다.  Fake EBP 기법이다. 

 

sfp를 shellcode - 4 위치로 조작한 후 , ret 을 leave-ret 가젯으로 바꾸면 

 

ebp = shellcode - 4 가 되며, leave (mov ebp, esp) (pop ebp) 를 하게된다. 이로인해 esp는 shellcode 실행 위치를 가리키며, 이상태에서 ret을 할 경우 eip는 쉘코드 실행위치로 jmp하게 된다.

 

leave-ret 가젯 0x80484df 를 사용하자.

 

이제 여기서 sfp 부분을 shellcode - 4 위치, ret 을 leave-ret 가젯으로 바꿔 payload를 작성해보자.

 

payload는 다음과 같다. &(shellcode + 4)(4) + shellcode(25) + NOP(11) + sfp=&(shellcode - 4)(4) + ret(leave-ret) (4)

 

하지만 카피본에서는 쉘이 따졌지만, 원본에서는 쉘이 안따진다. 원인은 알지 못했다.

 

다음 단계로 넘어가보자.

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

18. succubus -> nightmare  (0) 2020.03.11
17. zombie_assassin -> succubus  (0) 2020.03.11
15. giant -> assassin  (0) 2020.03.11
14. bugbear -> giant  (0) 2020.03.11
13. darkknight -> bugbear  (0) 2020.03.10

관련글 더보기

댓글 영역