Quais são esses códigos hexadecimais e como eles podem ser decodificados / codificados?

2

Eu tenho algum interesse em descobrir um pouco mais sobre uma exploração publicada que cria um usuário root em uma máquina linux; no entanto, antes de executar o código, quero ter certeza de que entendi tudo e não consigo encontrar nenhuma informação sobre os códigos hexadecimais sendo usados.

Este é o link para a fonte do código de exploração: exploitdb.com/exploits/17439

É um programa básico em C, mas o valor de um dos ponteiros usa código como este:

           "\x6a\x26\x5a\x25\x04\xe3\xb3\x64"
           "\x04\xc7\x03\x65\x48\xe6\x02\xc3"

Como decodifico isso para ASCII e como posso recodificá-lo de volta?

Estou pensando que posso estar totalmente fora da base e realmente esse código deve ser decodificado para a montagem, mas eu realmente não sei. De qualquer maneira, o que posso fazer com este código para ter certeza de que não estou executando comandos arbitrários?

Sou completamente novo em C, mas sei que VB.net/C#/PHP é perigoso.

P.S. Para aqueles de vocês que estão preocupados, eu vou estar executando isso em uma VM.

    
por skub 08.07.2011 / 07:30

3 respostas

1

O REPL do Python é bom em coisas como essas.

>>> "\x6a\x26\x5a\x25\x04\xe3\xb3\x64"
'j&Z%\x04\xe3\xb3d'
>>> "\x04\xc7\x03\x65\x48\xe6\x02\xc3"
'\x04\xc7\x03eH\xe6\x02\xc3'

Então sim, praticamente toda a montagem. Você precisará de um desmontador (ou um databook da CPU e muita paciência) para lê-lo.

    
por 08.07.2011 / 07:37
5

O muito entrada de banco de dados que você apontado para fornece o programa original em linguagem de montagem e seus equivalentes em linguagem C, imediatamente acima do código de máquina bruta codificado em hexadecimal. É a linguagem assembly SuperH .

    
por 08.07.2011 / 11:44
0

Decodificá-lo para ASCII seria inútil, já que não é uma string de texto - o mapa \x0... bytes para controlar caracteres no conjunto de caracteres ASCII, não para caracteres imprimíveis.

    
por 08.07.2011 / 11:54