(cyclic pattern을 통해 return address 영역까지 계산이 가능하다.
cyclic pattern은 대문자, 소문자, 숫자로 이루어진 조합이다.
Aa0, Aa1, ..., Aa9, Ab0, ... ab9, Ac0, ... Az9, Ba0, ... 으로 이어진다.
생성한 패턴을 사용해서 eip(rip) 레지스터에 저장되는 return address의 값을 검색해서
리턴 주소 영역까지의 정확한 오프셋을 찾을 수 있다.
https://zerosum0x0.blogspot.com/2016/11/overflow-exploit-pattern-generator.html
(깃허브에도 이런 툴들이 많다고 한다)
kali linux에 msf-pattern_create 명령을 사용해서 cyclic pattern을 만들 수 있다.
-l 옵션 뒤에 넣어준 숫자만큼 사이클릭 패턴을 만들어준다.
$ msf-pattern_create -l 길이
사이클릭 패턴을 주입시켜 EIP 혹은 RIP가 먹는 값의 인덱스를 찾아 오프셋을 구할 수 있다.
msf-pattern_offset 명령으로 값을 넣어주면 오프셋을 구해준다.
-l 옵션 뒤에 만들었던 사이클릭 패턴의 길이를 넣어주고
-q 옵션 뒤에 RIP(EIP) 레지스터가 먹은 값을 넣어주면 오프셋을 찾아준다.
$ msf-pattern_offset -l 길이 -q 오프셋을 찾을 문자열
'background > linux' 카테고리의 다른 글
Master Canary (0) | 2022.12.08 |
---|---|
SECCOMP (0) | 2022.12.01 |
Double Free Bug & Tcache Poisoning (0) | 2022.11.03 |
ptmalloc2 (0) | 2022.11.01 |
함수의 프롤로그와 에필로그 (0) | 2022.10.29 |