Exploit writing tutorial part 1에서 못 했던 실습을 하겠습니다!

 

1. 실습 환경

OS : Windows 10 32bit

Language : python 2.7.13

Target Easy RM to MP3 Converter

 

 

2. Crash 확인

payload 폴더에서 python file을 만들어 준다.

A 3만개를 넣어 크래시를 내자!

 

windbg에서 프로그램 attach 하고 exploit.py를 load하면 위 그림처럼 eip 값이 A로 덮인 걸 확인할 수 있다.

 

 

추가로 esp 위치를 확인하면 마찬가지로 A로 덮여있다. 

 

따라서, stack에 shellcode를 넣고 eip를 컨트롤해서 shellcode에 위치 시키면 된다!

 

일단, eip를 컨트롤 하기 위해 offset를 구해보자.

 

 

pattern 3만개를 넣어 eip 값을 확인해보자. 

아스키코드를 찾아보면 m%wR이 나온다.

offset를 구할 수 있다. 이제 eip를 덮어보자

 

eip를 B로 덮고 뒤에 NOP를 넣었습니다.

 

파일을 실행하면 이제 eip를 잡을 수 있고 NOP도 들어가는 걸 확인했습니다.

 

다음으로 stack에 shellcode를 넣고 eip를 shellcode로 옮기기 위해 jmp esp 가젯을 찾아보겠습니다.

 

 

애플리케이션 dll 중 MSRMfilter03.dll이 rebase와 ASLR이 false여서 MSRMfilter03.dll에서 가젯을 찾아보겠습니다.

 

 

아니.. 다른 블로그는 전부 MSRMfilter03.dll에서 jmp esp 가젯을 찾았는데 나만 안보이는 거야...

환경이 달라서 그런가.. 째든 다른 dll을 찾아 보다가 MSRMfilter03.dll에서 다른 가젯을 찾는 걸로 방향을 다시 바꿨습니다..

 

 

운 좋게 push esp, ret 가젯을 찾을 수 있었습니다. (1개 있네 ㄷㄷ)

 

 

따라서, stack에 shellcode를 넣고 push esp, ret 가젯을 사용하면 nop 타고 shellcode가 실행되게 payload를 짜보겠습니다.

 

 

shellcode는 구글링해서 구했습니다.

 

 

성공 ㅎㅎ

 

 

1. dll에서 원하는 가젯 못 찾으면 다른 가젯을 찾으면 된다... ㅋ 그래도 없으면 다른 dll을 찾아보자..

2. nop는 shellcode에 stack 관련 동작이 있을 수 있으므로 넣어줘야한다. -> shellcode가 안깨지기 위해

 

 

의문점 stack 왜 주소는 안바뀌나?? stack에는 aslr이 안걸려있나

 

 

 

https://samsclass.info/127/proj/easymp3-with-aslr.htm

 

Exploiting Easy RM to MP3 Converter on Windows 7

Exploiting Easy RM to MP3 Converter on Windows 7 Purpose Learn how to exploit a simple buffer overflow vulnerability to gain Remote Code Execution on Windows 7. We will use these tools: Basic Python scripting Immunity Debugger MONA plug-in for Immunity Met

samsclass.info

https://www.rcesecurity.com/2011/12/buffer-overflow-exploitation-jump-to-shellcode-via-push-espret/

 

Buffer Overflow Exploitation: Jump to shellcode via PUSH ESP, RET | RCE Security

Buffer Overflow Exploitation: Jump to shellcode via PUSH ESP, RET by Julien Ahrens | Friday, December 16, 2011 | Exploit | Another possible way to jump to shellcode is using the PUSH ESP, RET technique. If you’ve got no usable CALLs or JMPs to ESP for so

www.rcesecurity.com