/bin/sh 문자열 주소 찾는 방법.

2022. 7. 14. 22:09·Tips & theory
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/

 

libc-database

 

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
'Tips & theory' 카테고리의 다른 글
  • 문제에서 제공된 libc 파일 사용.
  • GDB run 실행 후 입력 값 넘기기
  • Python 3 + pwntools 자주 하는 실수
  • Kali linux setup
wyv3rn
wyv3rn
아저씨의 흔한 취미. wyv3rn#1249
  • wyv3rn
    think storage
    wyv3rn
  • 전체
    오늘
    어제
    • 분류 전체보기 (516)
      • To do list (7)
        • Doing (1)
        • Complete (6)
      • Diary (35)
      • Tips & theory (75)
      • Kernel Exploit (27)
        • Theory (15)
        • Exercise (5)
      • File Structure (6)
      • Wargame (321)
        • pwn.college (34)
        • Dreamhack (155)
        • pwnable.kr (15)
        • Lord of Sqlinjection (4)
        • Cryptohack (20)
        • Root me (27)
        • CodeEngn (4)
        • Exploit Education (22)
        • ROP Emporium (8)
        • H4C (10)
        • Hackerchool (22)
      • CTF (44)
        • Solved (42)
        • Unsolved (2)
      • Script (0)
      • RubiyaLap (0)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • PWN wargame 모음 (및 느낀점)
    • 비공개 글들에 대해.
    • 뭐라도 하나 얻어가시길...
  • 인기 글

  • 태그

    32bit
    root-me
    x64
    hackerschool
    64bit
    FSB
    pwnable.kr
    vtable
    _IO_FILE
    pwntools
    cryptohack
    heap
    phoenix
    Buffer Overflow
    root
    x86
    BOF
    exploit education
    tcache
    dreamhack
    docker
    la ctf
    Format String Bug
    RTL
    Me
    libc
    CANARY
    lob
    rop
    ROOT ME
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
wyv3rn
/bin/sh 문자열 주소 찾는 방법.
상단으로

티스토리툴바