- 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 |