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()
'Pwnable > Techniques' 카테고리의 다른 글
RTL (0) | 2020.08.29 |
---|---|
FEBP (0) | 2020.08.29 |
FPO (0) | 2020.08.29 |
Prologue & Epilogue (0) | 2020.08.29 |