Uma solução para esse problema (que alguém encontrou no mesmo contexto) está aqui: link
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?
Uma solução para esse problema (que alguém encontrou no mesmo contexto) está aqui: link
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.