Eu tenho um programa vítima (com vulnerabilidade de saturação de buffer): ele usa get() 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 é esta: o SC é redirecionado para a vítima, injeta o shellcode, faz com que um shell seja gerado, mas o shell gerado descobre que seu stdin está fechado, então sai imediatamente.
Tentei expect
a injeção, mas expect
as bombas depois que o projétil apareceu.
Parece que a única maneira prática é colocar o shellcode no buffer de colagem do mouse para que eu possa injetá-lo enquanto mantenho o teclado como dispositivo de entrada. Mas não tenho ideia de como colocar dados binários no meu buffer de colagem.
Alguma idéia de como contornar esse problema?
Responder1
Uma solução para este problema (que alguém encontrou no mesmo contexto) está aqui: https://stackoverflow.com/questions/8509045/execve-bin-sh-0-0-in-a-pipe
Responder2
Você poderia fazer isso com um script simples no qual 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 de uma nova linha.
Você pode então copiar o texto impresso, mesmo que não esteja visível. Claro, seu terminal deve estar no modo bruto.