Paginator
Plataforma: Nullcon CTF Categoria: Web Exploitation Autor: gehaxelt
Desafio
O desafio "Paginator" apresenta um site vulnerável a SQL Injection, permitindo acesso não autorizado ao conteúdo do banco de dados SQLite. O objetivo é explorar essa vulnerabilidade para obter a flag.
Solução
1. Análise do código
A análise do código PHP revela que a aplicação usa um banco de dados SQLite para armazenar páginas e suas respectivas descrições. O código relevante pode ser visto na imagem abaixo:

Pontos importantes:
O banco de dados armazena páginas numeradas de 1 a 10.
A flag está armazenada na página "Flag", codificada em Base64.
O código permite consultas SQL diretamente via parâmetro
p
na URL.A consulta NÃO usa prepared statements, tornando-a vulnerável a SQL Injection.
2. Identificação da vulnerabilidade
O site possui uma funcionalidade para listar páginas dentro de um intervalo de IDs, acessível pela URL:
A consulta SQL gerada é:
Como não há filtragem de entrada adequada, podemos manipular o parâmetro para injetar SQL arbitrário.
3. Explorando a SQL Injection
Ao modificar a URL para:
Estamos alterando a consulta SQL para:
Isso força a inclusão da página com ID 1, que contém a flag.
URL injetada:

A resposta do servidor retorna a flag codificada em Base64:
4. Decodificação da Flag
Usamos uma ferramenta online ou o comando base64 -d
no terminal:
Flag
Autor da WriteUp
Atualizado