Pwnable/Techniques

Pwntools for me

Lucvs 2022. 10. 19. 20:39

Freaking Shit. Last 사이버전사경연대회 본선에서 Python3 밖에 없어서 String Return 값이 byte로 출력됨. Crap.

 

PYHTON2 ▶ normal 하게 쓰면 됨.

PYTHON3 ▶ 인자로 사용할 때 b'___' 로 감싸야 됨. 출력할 때나 일반 string 으로 변경할 때 .decode()로 저주를 풀어야 함.

 


from pwn import *

 

# 객체 생성

r = remote("ADDR", PORT)

p = process("Local_File_Address")

 

# Data Packing

p32(data, endian='big') # Default → Little Endian

p64(data, endian='big')

 

# Get Data from PLT, GOT

elf = ELF("Local_File_Address")

elf.plt['Function_name'] # Find PLT Address

elf.got['Function_name'] # Find GOT Address

elf.symbols['Function_name'] # Find ETC Address

 

# 데이터 받기

p.recv(size) # size 만큼 Receive

p.recvline() # '\n'까지 Receive

p.recvuntil(bytes) # 지정한 문자열까지 Receive

 

# 데이터 보내기

p.send(size)

p.sendline() # 데이터를 보낼 때 마지막에 '\n' 추가하여 Send

 

# Interaction with shell

p.interactive()