If I use echo -ne "AA\x08A", the output is AA, as the backspace character and one A are removed.
Parece apenas isso porque você imprime a saída para o terminal e o backspace tem um significado especial nesse caso: exclua o caractere anterior de forma semelhante ao que você alcança quando pressiona a tecla de retrocesso na tecla. Isso significa que ele exibirá o primeiro A, o segundo A, excluirá o segundo A e voltará após o primeiro A e exibirá o quarto caractere, ou seja, A:
$ echo -ne "AA\x08A"
AA
Mas, na realidade, ele imprimirá todos os quatro octetos - como mostra um display com hd
(ou hexdump
ou xxd
...):
$ echo -ne "AA\x08A" | hd
00000000 41 41 08 41 |AA.A|
E os mesmos 4 caracteres também serão impressos em qualquer outro programa, como o seu script vulnerável ou algum script em perl:
$ echo -ne "AA\x08A" | perl -e 'print unpack("H*",<STDIN>),"\n"'
41410841