반응형
Notice
Recent Posts
Recent Comments
Link
안 쓰던 블로그
pwntools 기본 사용법 본문
반응형
pwntools
pwntools는 CTF 프레임워크이자 익스플로잇을 쉽게 짤 수 있게 해주는 라이브러리이다
공식 깃허브: github.com/Gallopsled/pwntools
공식 문서: docs.pwntools.com/en/stable/#
설치
apt-get update
apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools
기본 사용법
from pwn import * #임포트
r = precess("파일") #파일 실행
r.sendline("hello") #stdin에 hello\n 문자열을 넣는다
r.recv(4) #stdout에서 4바이트의 문자열을 읽어와 반환한다
r.recline() #stdout에서 문자열 한 줄을 읽어와 반환한다
r.recvuntil('input:') #stdout에서 input:이라는 문자열까지를 반환
r.interactive() #유저가 직접 화면에 입출력할 수 있게 돌려준다
예제
"#i: n + m = ?"라는 계산이 20번 들어오는 프로그램을 자동으로 해결하는 코드
예) #1: 2 + 3 = ?
from pwn import *
r = process("./task") #파일 실행
#r = remote("주소", 포트) #nc접속
for i in range(20): #20번 반복
p.recvuntil(':') #문제 숫자 앞인 :까지 읽기
first=r.recvuntil('+')[:-1] #+앞까지 읽고 숫자 받기
second=r.recvuntil('=')[:-1] #=앞까지 읽고 숫자 받기
ans=int(first)+int(second) #계산
r.sendline(str(ans)) #답을 프로그램에 입력
#--------------
t=r.recvline() #아니면 이런 식으로 한 줄 입력 받음
res=eval(t) #eval()함수로 계산
print(res) #콘솔에 답 출력
r.recvuntil(":") #:까지 이동
r.sendline(str(res)) #정답 입력
r.interactive() #입출력 제어를 넘겨 받음
반응형
'CTF > Pwnable' 카테고리의 다른 글
32bit와 64bit - x86과 x64 비교 (0) | 2020.10.13 |
---|---|
레지스터 (0) | 2020.10.13 |
스택과 SFP와 RET (0) | 2020.10.13 |
pwntools을 이용한 문제 풀이-double pistol (0) | 2020.09.15 |
pwntool을 이용한 문제 풀이 (0) | 2020.09.15 |
Comments