Pwn (WIP)

Binario

Archivo ejecutable que puede ser entendido por el sistema operativo

Lenguaje Compilado vs Interpretado

Arquitecturas

32 bits cada valor hexadecimal representa 4 bits | los valors de la stack empiezan por R ejemplo RIP. Se representa como x86 64 bits, tenemos la posibilidad de representar mas valores | los valores de la stack empiezan por E ejemplo RIP. Se representa como x64

Endianess

Big Endian manera de almacenar valor del byte mas significativo al menos (izquierda a derecha, intuitivo a lectura humana) Little Endian los pares hexadecimales se representan de derecha a izquierda (no intuitivo)

Segmentos del binario

Encabezado: Headers Codigo: Logica de instrucciones de lo que se va a ejecutar Data: Donde se guardan las variables Pila: Estructura de datos que almacena los valores de las instrucciones Heap: Crece para no colapsar y ocupar la Symbols Imports (Librerias)

7ffff7 representar encabezados 5555 dentro del binario 7ffffff posicion del stack

Stack

Esta es de tamaño fijo. comienza en una posicion de memoria alta y empieza a bajar (crece hacia abajo) EBP donde esta mi stack, la base EIP a donde va la siguiente instruccion ESP donde es el limite de mi stack

Heap

Esta es de tamaño dinamica para almacenar variables persistentes Crece exponencialmente cada que llega al limite de su espacio

Libreria C

Funciones estandar del sistema operativo para conectar las funciones con los ejecutables

PLT (Procedure Linkage Table)

eTiene informacion de si es la primera vez que llama una funcion para sino buscarlas en Libc. Se la pasa a GOT para que la recuerde

GOT

Almacena las llamadas a funciones que se han llamado previa

Assembly

Lenguaje de bajo nivel, utiliza directablente

Registros

Son cajas de memoria que guardan variables Proposito general: Guardar lo que sea Proposito especial: funciones especificas como los punteros de la stack Pueden ser de R para 64 bits R de 32

Mnemonicos

Palabras clave para dar las instrucciones de lo que se debe hacer De derehca izquierda, lo que se opere termina en la variable de la izquierda Syscall: Funciones especificas a las que se les pasa valores en registros especiales especificos para su funcionamiento x86.syscall.sh

xor rsi,rsi --> hacer

PWN

protecciones NX — evita ejecutar codigo shellcodeen stack o heap Canary — Evita sobreescritura del retorno, compara un valor aleatorio y si ha cambiado no deja que se ejecute el binario, evita bufferoverflow PIE — Aleatoriza las posiciones de memoria, excepto las ultimas 3 RELRO — Proteger la GOT de sobreescritura ASLR — Aleatoriza las posiciones de memoria a nivel de kernel

Practica

herramientas https://github.com/apogiatzis/gdb-peda-pwndbg-gef

Last updated