w300 – Bleeding “Heartbleed” Test Web

Home / Wiki / w300 – Bleeding “Heartbleed” Test Web

w300 – Bleeding “Heartbleed” Test Web

> SECCON > SECCON CTF 2014 > w300 - Bleeding "Heartbleed" Test Web

http://bleeding.pwn.seccon.jp/

Solução

Nossa equipe descobriu que passando um IP de um server vulnerável, ele obtia o que o servidor respondia, e jogava o resultado no banco de dados. A partir daí, precisariamos então simular um servidor vulnerável para verificar se a task se trata de SQL injetion, para isso, usamos um script de honeypot encontrado no Google, e então  ao tentar passar uma aspa simples (‘) nessa resposta (editando a variável $taunt do script), o servidor mostrou um erro de sintaxe. O que evidenciou a brecha para SQL injection!
Outro detalhe da challenge é que quando o sistema conseguia executar o INSERT, ele mostrava nos comentários da página:

Durante as tentativas de SQL injection foi exibido na página parte da query, o que revelou que esse número vinha de uma campo da tabela results. Então a ideia seria mudar a query para trazer a flag nesse comentário da página!

Descobrindo o banco de dados

Depois de algum guessing, decidimos chamar sqlite_version(), o que resultou em: TIME=3.6.20. Então, etapa concluída. Agora como explorar um SQLite?

Obtendo metadata do banco de dados

No SQLite existe uma tabela chamada sqlite_master que é como um INFORMATION_SCHEMA, só que bem resumido.

Listando as tabelas

Através do seguinte injection, conseguimos ver todas as tabelas presentes no sistema:

Resultou em:

Flag

Agora então para pegar a flag, basta lermos o campo flag da tabela sssFLGss.

Resultou em:

Criado por

Epic Leet Team

 

Recent Posts