728x90
  • pwntools

0. pwntools 란?

 

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

 

 

1. pwntools 사용법

 

from pwn import*

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

 

 

2. pwntools 접속 

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

 

3. pwntools - payload 보내기

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

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

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'를 입력한다.

 

 

4, pwntools 파일 실행

 

r = process("파일이름")

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

 

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

 

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

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

 

 

5. pwntools - 쉘 접속

 

p.interactive()

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

 

 

6. pwntools - debug

import pwn from*

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

: 예상하 페이로드가 터질 때 유용하게 쓰인다. 

위 코드는 페이로드를 진행하는 도중 gdb를 실행시킬 수 있느 함수로 새 창에서 해당 프로그램이 gdb로 보여진다. 

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

'자기개발 > 포너블' 카테고리의 다른 글

[2022 CTF ] 포너블 - Day 9  (0) 2022.02.08
[2022 CTF] 포너블 - Day 8  (0) 2022.02.08
[포너블] gdb-pead 개념 및 명령어 정리  (0) 2022.02.05
[포너블] gdb 개념 및 명령어  (0) 2022.02.04
[LOB]gremlin 문제 풀이  (0) 2022.01.27

+ Recent posts