728x90
pwntools는 Python 기반의 취약점 분석과 익스플로잇 개발을 위한 도구 모음이다.
드림핵(dreamhack) 정리입니다. 문제가 될시 삭제하겠습니다
#익스플로잇(Exploit) 이란 ?
시스템, 소프트웨어 또는 네트워크의 취약점을 악용하여 비정상적인 동작을 유발하거나 권한을 얻는 행위
from pwn import *
1. process & remote
process 함수 : 로컬 바이너리를 대상으로 할 때 사용하는 함수
remote 함수 : 원격 서버를 대상으로 할 때 사용하는 함수이다.
p = process('./test') # 로컬 바이너리 'test'를 대상으로 익스플로잇
p = remote("example.com", 31337) # example.com의 31337 포트에서 실행 중인 프로세스를 대상
2. 데이터 전송 및 수신
send() : 줄 바꿈 없이 전송
sendline() : 줄 바꿈 포함 전송
sendafter() : 특정 문자열이 수신된 후 데이터를 전송
sendlineafter() : 특정 문자열이 수신된 후 데이터를 전송 후 \n
p.send(b'hello, world')
p.sendline(b'hello, world')
p.sendafter(b'hello', b'A')
p.sendlineafter(b'hello', b'A')
sendafter 설명 : hello를 출력하면 A를 입력
recv () : 프로세스에서 데이터를 받기 위해 사용
recv() 와 recvn()의 차이점 : recv(n)은 최대 n 바이트를 받는 것인데, 그 만큼을 받지 못해도 에러를 발생시키지 않음
반면, recvn(n)의 경우 정확히 n 바이트의 데이터를 받지 못하면 계속 기다림
data = p.recv(1024) # 최대 1024 바이트까지 받아서 data에 저장
data = p.recvline() # 출력하는 데이터를 개행문자를 만날 때까지 저장
data = p.recvn(5) # 최대 5바이트만 받아서 저장
data = p.recvuntil(b'hello') # hello를 출력할 때까지 데이터를 수신
data = p.recvall() # p가 출력하는 데이터를 프로세스가 종료될 때까지 받아서 저장
3. interactive
셸을 획득했거나, 익스플로잇의 특정 상황에 직접 입력을 주면서 출력을 확인하고 싶을 때 사용하는 함수
즉, 익스플로잇이 성공한 후 쉘이나 결과를 확인할 때 사용함
p.interactive()
728x90