
Herramienta automatizada de explotación ret2win para desafíos CTF. Encuentra el offset de pila, genera payloads, soporta explotación remota y adjunta GDB para depurar binarios x86.
____ ________ __________ __
/ __ \_ ______ / ____/ /_/ __/_ __/___ ____ / /
/ /_/ / | /| / / __ \/ / / __/ /_ / / / __ \/ __ \/ /
/ ____/| |/ |/ / / / / /___/ /_/ __/ / / / /_/ / /_/ / /
/_/ |__/|__/_/ /_/\____/\__/_/ /_/ \____/\____/_/
Por: DiegoAltF4 y Dbd4
Se puede usar tanto de forma local como remota (indicando IP y puerto). Encuentra automáticamente el offset hasta el Puntero de Instrucción almacenado en la pila.
Además, se puede configurar para devolver una shell. Por defecto, imprime los datos recibidos por la conexión (posible flag).
También permite mostrar el offset al puntero de instrucción en la pila y soporta arquitectura x86 tanto en 32 bits como en 64 bits y se puede usar para depurar el exploit con GDB.
| Parámetro | Información |
|---|---|
| -f | indica el binario a explotar (parámetro obligatorio). |
| -t | indica la función objetivo a la que queremos saltar (parámetro obligatorio). |
| -v | indica modo verbose. |
| -vv | indica valor de verbosidad máxima, modo debug. |
| -g | permite adjuntar GDB para depuración. |
| --offset | imprime el offset al Puntero de Instrucción. |
| --shell | permite mantener una sesión interactiva después de la explotación. |
| --remote | permite explotar en un servidor remoto. |
| --before | permite añadir contenido de un archivo antes del payload. |
| --after | permite añadir contenido de un archivo después del payload. |
./PwnCtfTool.py -f vuln.bin -t flag_func
En esta parte, explicaremos los diferentes usos de la herramienta con ejemplos. Hemos subido una lista de binarios vulnerables e iremos actualizando esta lista a medida que incluyamos nuevas opciones en la herramienta. Para facilitar la búsqueda de la información indicaremos los parámetros utilizados en el comando final que permite explotar el binario. Además, vamos a clasificar la dificultad de los desafíos usando el emoji 💣. Una sola bomba significa que es muy fácil, cinco bombas indica que la dificultad es muy alta. Para cada desafío hemos incluido un pequeño writeup que explica con mucho más detalle cómo podemos llegar a la solución.
Usando los parámetros
-f-t--shell--offset
Para toda la explicación puedes leer el writeup:
Comando final:
python3 ../../PwnCtfTool.py -f ./vuln1 -t win --shell --offset
Usando los parámetros
-f-t--before--shell
Para toda la explicación puedes leer el writeup:
Comando final:
python3 ../../PwnCtfTool.py --before before2.txt -f vuln2 -t rce --shell
git clone https://github.com/Diego-AltF4/PwnCtfTool.git
cd ./PwnCtfTool
pip3 install -r requirements.txt
chmod +x PwnCtfTool.py
./PwnCtfTool.py
Creado por DiegoAltF4 y Dbd4