InfoSec/Pawnable

[Pwnable] Pwntools 사용 방법

2024. 5. 20. 16:24
목차
  1. 등장 배경
  2. 설치 방법
  3. 사용 방법

등장 배경


pwndbg에서 만약 인자로 전달할 값이 많거나 파이썬의 코드가 길어지게 되면 불편하고 가독성이 떨어진다.

그래서 해커들은 파이썬으로 익스플로잇 스크립트를 작성하여 바이너리를 실행한다.

설치 방법


sudo apt-get update
sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install --upgrade pwntools

설치 후에 사진과 같이 명령어를 입력했을 때 이런 화면이 뜨면 잘 설치된 것이다.

사용 방법


1. process: 익스플로잇을 로컬 바이너리를 대상으로 할 때 사용하는 함수, 익스플로잇을 테스트하고 디버깅할 때

2. remote: 원격 서버를 대상으로 할 때 사용하는 함수, 대상 서버를 공격하기 위해

3. send: 데이터를 프로세스에 전송하기 위해 사용

  • send
  • sendline: 인자를 \n과 함께 출력
  • sendafter: 해당 바이너리가 첫 번째 인자를 출력하면 두 번째 인자를 입력
  • sendlineafter

4. recv: 프로세스에서 데이터를 받기위해 사용

  • recv: 프로세스가 출력하는 데이터를 최대 인자의 크기 만큼 받기
  • recvline: 프로세스가 출력하는 데이터를 개행문자를 만날 때까지 받기
  • recvn: 프로세스가 출력하는 데이터를 인수에 적힌 숫자의 크기만큼만 받기
  • recvuntil: 프로세스가 인자에 해당하는 문자를 출력할 때까지 데이터를 수신하여 받기
  • recvcall: 프로세스가 출력하는 데이터를 프로세스가 종료될 때까지 받기

5. p32/p64: 

6. u32/u64:

from pwn import *
p = process('./test')
p.interactive()

7. interactive: 특정 상황에 직접 입력을 주면서 출력을 확인하고 싶을 때 사용하는 함

from pwn import *
e = ELF('./test')
puts_plt = e.plt['puts'] # ./test에서 puts()의 PLT주소를 찾아서 puts_plt에 저장
read_got = e.got['read'] # ./test에서 read()의 GOT주소를 찾아서 read_got에 저장

8. e: elf 에 저장되어 있는 각종 정보를 추출

from pwn import *
context.log_level = 'error' # 에러만 출력
context.log_level = 'debug' # 대상 프로세스와 익스플로잇간에 오가는 모든 데이터를 화면에 출력
context.log_level = 'info' # 비교적 중요한 정보들만 출력

9. context.log: 익스플로잇을 디버깅하기 위해 사용

from pwn import *
context.arch = "amd64" # x86-64 아키텍처
context.arch = "i386" # x86 아키텍처
context.arch = "arm" # arm 아키텍처

10. context.arch: 아키텍처 정보를 지정할 수 있는 변수

#!/usr/bin/env python3
# Name: shellcraft.py
from pwn import *
context.arch = 'amd64' # 대상 아키텍처 x86-64
code = shellcraft.sh() # 셸을 실행하는 셸 코드
print(code)
code = asm(code) # 셸 코드를 기계어로 어셈블
print(code)

11. shellcraft: 공격에 필요한 셸 코드를 쉽게 꺼내 쓸 수 있도록 함

12. asm: 어셈블 언어로 바꾸어주는 기능, 아키텍처를 미리 지정해야 함

 

 

저작자표시 비영리 변경금지 (새창열림)
  1. 등장 배경
  2. 설치 방법
  3. 사용 방법
'InfoSec/Pawnable' 카테고리의 다른 글
  • [Pwnable] Shellcode
  • [Pwnable] Pwndbg 설치와 사용 방법
agor
agor
agor
Steady Study
agor
전체
오늘
어제
  • Category (61)
    • Language (5)
      • C (1)
      • Java (1)
      • PHP (3)
    • DB (1)
      • MySQL (1)
    • Library (2)
      • React (2)
    • Framework (1)
      • SpringBoot (1)
    • Coding Test (13)
      • C (3)
      • Python (10)
    • Computer Science (6)
      • Computer Architecture (3)
      • Network (3)
    • OS (7)
      • Linux (7)
    • InfoSec (23)
      • Pawnable (3)
      • Reversing (8)
      • Wargame (11)
      • Web (1)
    • Cloud (1)
      • AWS (1)

블로그 메뉴

  • 📖Guestbook
  • 🖥️GitHub
  • ✏️Post
  • ⚙️Manager

공지사항

인기 글

태그

  • 티스토리챌린지
  • 오블완

최근 댓글

최근 글

hELLO · Designed By 정상우.
agor
[Pwnable] Pwntools 사용 방법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.