728x90
반응형
사실 /bin/sh 문자열만 찾는 것은 아니며 이를 활용해서 여러 함수의 주소를 찾을 수 있다.
gdb에서 찾기.
보통 system 함수와 함께 쓰이므로 아래와 같이 찾을 수 있다.
gef➤ find &system,+999999999,"/bin/sh"
0xb7f8ad4c
warning: Unable to access 16000 bytes of target memory at 0xb7fd8f54, halting search.
1 pattern found.
gef➤ x/s 0xb7f8ad4c
0xb7f8ad4c: "/bin/sh"
또는 gef 같은 경우 grep 명령어로 찾을 수 있다.
gef➤ grep /bin/sh
[+] Searching '/bin/sh' in memory
[+] In '/usr/lib/x86_64-linux-gnu/libc.so.6'(0x7fc17f9a9000-0x7fc17fa01000), permission=r--
0x7fc17f9c4698 - 0x7fc17f9c469f → "/bin/sh"
이를 찾은 뒤 libc base 주소와 더하면 실제 주소가 된다.
반응형
libc에서 찾기
strings 명령어를 통해 /bin/sh 문자열을 검색하면 offset을 확인할 수 있다.
app-systeme-ch33@challenge02:~$ strings -tx /libold/i386-linux-gnu/libc.so.6 | grep /bin/sh
162d4c /bin/sh
마찬가지로 libc_base 주소와 더하면 실제 주소가 된다.
libc에서 찾기 2.
libc 파일이 제공되지 않는 경우 libc-database 사이트를 통해 찾을 수 있다.
https://libc.rip/
이 때는 적어도 2개 함수의 이름과 주소를 알 수 있어야 한다.
libc에서 찾기 3 (pwntools)
from pwn import *
libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
print('/bin/sh = ',hex(list(libc.search(b'/bin/sh'))[0]))
print('/bin/sh = ',hex(next(libc.search(b'/bin/sh'))))
┌──(kali㉿kali)-[~/Downloads]
└─$ python b.py
[*] '/lib/x86_64-linux-gnu/libc.so.6'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: PIE enabled
/bin/sh = 0x198882
/bin/sh = 0x198882
728x90
반응형
'Tips & theory' 카테고리의 다른 글
libc에서 offset 찾기. (0) | 2022.07.29 |
---|---|
문제에서 제공된 libc 파일 사용. (0) | 2022.07.28 |
GDB run 실행 후 입력 값 넘기기 (0) | 2022.07.15 |
Python 3 + pwntools 자주 하는 실수 (0) | 2022.07.09 |
Kali linux setup (0) | 2022.07.02 |