InitOne

Reconhecimento

Apresentacao

Igual ao primeiro desafio de Binary Exploitation, o PicoCTF nos da o código-fonte e o binário executável.

Ao analisar o código, é possível observar que, na função main, o arquivo flag.txt é lido e seu conteúdo é salvo na variável flag. Outra parte interessante desse código é a função signal, que faz o tratamento do sinal SIGSEGV ( Sinal do Segmentation Fault ) e utiliza a função sigsegv_handler como handler.

codigo-fonte

Exploração

Dentro da função sigsegv_handler, a variável flag é “printada”.
Então, temos que fazer o programa gerar o SIGSEGV e, para isso, precisamos provocar um erro de segmentação.

Enviando um monte de caracteres como argumento do programa, sobrescrevemos instruções necessárias para a execução do código, fazendo com que ele gere o SIGSEGV e assim pegamos a flag.

flag