Pwntools 개념 및 사용법

2022. 2. 3. 21:21·잡다한 지식
728x90

pwntools 도구

: 시스템 해킹(pwnable)에 필요한 기능들로 커스터마이징이 된 파이써 모듈이다. 

 

 

pwntools 사용법

from pwn import*

pwntools를 사용하기 위해서는 위의 코드를 통해서 import 하면 된다. 

process 로컬 바이너리에 대해서 exploit을 실험해볼 때 사용하는 함수
remote 원격 서버를 대상으로 실제 exploit을 작동시킬때 사용하는 함수
ssh ssh를 통해서 접속하는 함수
(ssh:서로 통신할 때 보안적으로 안전하게 통시하기 위해 사용하는 프로토콜)

 

pwntools을 이용해서 payload를 보내볼 건데, 예시를 다음과 같이 작성해봤다.

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

p.send('A')                   
p.sendline('A')                   
p.sendafter('asdf', 'A')       
p.sendlineafter('asdf', 'A')

 

위에 payload를 하나하나 설명하자면,

  • p.send('A')                        : ./test에 'A'입력한다.
  • p.sendline('A')                   : ./test에 'A'입력 뒤에 newline character(\n)까지 입력한다.
  • p.sendafter('asdf', 'A')         : ./test가 'asdf'를 출력할 시, 'A'를 입력한다.
  • p.sendlineafter('asdf', 'A')     : ./test가 'asdf'를 출력할 시, 'A'+'\n'를 입력한다.

 

 

pwntools 에서 파일 실행

 

r = process("파일이름")

process 클래스의 임의의 프로세스를 만드는 것으로 elf 파일을 실행시킬 수 있다. 위의 명령어를 실행하게 되면 해당 프로그램을 실행시키고, 입력을 대기한다. 이후 실행된 프로그램은 r 변수를 통해 접근 할 수 있다. 

 

process()로 실행시킨 프로그램은 입출력을 직접적으로 할 수 없는 대신 r 변수를 통해 함수를 호출하면서 파이썬 코드를 통해 프로그램의 stdin에 입력을 넣고, stdput에서 출력을 받을 수 있다. 

 

r = remote("주소", 포트)

process 대신 remote 클래스를 사용한다면 원격으로 접속 할 수 있다. 

 

 

pwntools로 쉘 접속

 

p.interactive()

쉘을 획득한 경우나, exploit 특정 경우에는 직접 입력을 주면서 디버깅이 필요하 경우가 있다. 이때 함수 interactive가 exploit 파일과 process와의 연결을 stdin/stidout에서 process로 바꿔준다. 

 

 

pwntools로 디버깅

import pwn from*

p=process('./test')
gdb.attach(p)

페이로드가 예상 외로 터질 때 유용하게 쓰이는 기능으로 페이로드를 진행하는 도중 gdb를 실행시킬 수 있느 함수로 새 창에서 해당 프로그램이 gdb로 보여지게 한다. 

하지만 서버 접속는 불가능하고, process, 즉 파일 실행으로만 가능하다.

'잡다한 지식' 카테고리의 다른 글

Colab 실행 관련 단축키  (0) 2024.07.11
The processor type 'metapc' is not included in the installed version of IDA. 오류  (0) 2023.04.19
GDB-PEDA 정의 및 명령어 정리  (0) 2022.02.05
GDB 도구 명령어 정리  (0) 2022.02.04
'잡다한 지식' 카테고리의 다른 글
  • Colab 실행 관련 단축키
  • The processor type 'metapc' is not included in the installed version of IDA. 오류
  • GDB-PEDA 정의 및 명령어 정리
  • GDB 도구 명령어 정리
동굴러버의 백업단지
동굴러버의 백업단지
365일 중 364일 동굴에 있고 싶은 동굴러버의 속세와의 소통창구 겸 백업단지 저장소 (※급 잠수 및 와다다 백업 게시글 주의※)
  • 동굴러버의 백업단지
    새벽 1시 19분
    동굴러버의 백업단지
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • CS (0)
      • 자기개발 (97)
        • Linux (11)
        • Web (13)
        • Unity (24)
        • 블록체인 (37)
        • 포너블 (4)
        • 디지털포렌식 (0)
      • 문제 풀이 (16)
      • 잡다한 지식 (5)
      • 외출일지 (2)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
동굴러버의 백업단지
Pwntools 개념 및 사용법
상단으로

티스토리툴바