Pwnable/Techniques

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 주소로 사용할 수 없음

Pwnable/Techniques

FPO

FPO(Frame Pointer Overflow) 기법은 다음과 같은 조건에서 유효하며 사용가능하다. - main 함수 이외에 하나 이상의 sub 함수가 존재해야 한다. - SFP의 마지막 1byte를 변조할 수 있어야 한다. 일반적인 스택의 상황이 아닌 SFP 의 마지막을 변조한 상태의 스택을 나타낸 것이다.

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