Enviando dados binários para gets ()

2

Eu tenho um programa de vítima (com uma vulnerabilidade de saturação de buffer): ele usa gets () para gravar em um buffer de tamanho fixo.

Suponha que eu coloque o shellcode em um arquivo SC. Então eu corro

$ ./victim < SC
Input your data: 
$

A razão pela qual o shellcode parece não funcionar é o seguinte: SC é redirecionado para a vítima, injeta o shellcode, faz com que um shell seja gerado, mas o shell gerado encontra seu stdin fechado, então sai imediatamente.

Eu tentei expect para a injeção, mas expect de bombas após o spawn da shell.

Parece que a única maneira prática é colocar o shellcode no buffer de colar do meu mouse para que eu possa injetá-lo enquanto retenho o teclado como o dispositivo de entrada. Mas não tenho ideia de como obter dados binários no meu buffer de pasta.

Alguma ideia de como contornar este problema?

    
por Fixee 25.04.2013 / 20:32

2 respostas

2

Uma solução para esse problema (que alguém encontrou no mesmo contexto) está aqui: link

    
por 26.04.2013 / 00:29
2

Você pode fazer isso com um script simples no qual você imprime seus caracteres especiais.

Por exemplo, em Perl, você pode imprimir qualquer caractere especificando seu código hexadecimal. Por exemplo: perl -e 'print "\x54\x0A"' imprime um 'T' seguido por uma nova linha.

Você pode copiar o texto impresso, mesmo que não esteja visível. Claro, seu terminal deve estar no modo raw.

    
por 25.04.2013 / 21:01

Tags