Pwnable

Pwnable/Dreamhack

Dreamhack - SingleByteXor

#include int main() { char ciphrtext[23] = { 0x54, 0x58, 0x6b, 0x64, 0x58, 0x75, 0x4f, 0x7b, 0x21, 0x5c, 0x7c, 0x75, 0x42, 0x4f, 0x21, 0x63, 0x4f, 0x74, 0x42, 0x75, 0x51, 0x7d, 0x6d }; char plaintext[23] = { 0x00, }; for (int i = 0; i < 256; i++) { for (int k = 0; k < 23; k++) { plaintext[k] = ciphrtext[k] ^ i; } printf("%s", plaintext); } } Simple XOR Problem

Pwnable/Techniques

Pwntools for me

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

Pwnable/Techniques

RTL

RTL Return To Library 우선 RTL을 이해하기 전에 PLT와 GOT를 알아야 한다. PLT & GOT PLT (Prodecure Linkage Table) 사용자가 만든 함수 -> plt 참조할 필요 X 외부 라이브러리(stdio, stdlib 등)에서 가져다 쓸 경우 -> plt 참조 쉽게 말해서 외부 참조 함수들이 나열되어 있는 table 임 GOT (Global Offset Table) PLT에 존재하는 함수들의 실제 주소가 담겨있는 table 라이브러리에서 함수를 호출할 때 plt 가 got를 참조 이제 RTL을 어떻게 사용하는지를 알아보자. RTL : Return To Library 보호기법 DEP (Data Execution Prevention) : 데이터 실행 방지 -> 쉘 ..

Pwnable/Techniques

FEBP

Fake EBP는 다음과 같은 상황에서 사용한다. buffer + SFP + RET를 사용자가 다른 값으로 덮을 수 있음 "\xbf" 로 시작하는 영역, 즉 스택의 주소를 RET 주소로 사용할 수 없음 "\x40"로 시작하는 영역, 즉 라이브러리 함수의 주소를 RET 주소로 사용할 수 없음

Lucvs
'Pwnable' 카테고리의 글 목록