这些十六进制代码是什么以及如何对它们进行解码/编码?

这些十六进制代码是什么以及如何对它们进行解码/编码?

如果想了解更多有关已发布的在 Linux 机器上创建 root 用户的漏洞的信息,我会很感兴趣;但是,在运行代码之前,我想确保我理解了所有内容,但我似乎找不到有关所使用的十六进制代码的任何信息。

这是漏洞代码源的链接:exploitdb.com/exploits/17439

这是一个基本的 C 程序,但其中一个指针的值使用如下代码:

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

我如何将其解码为 ASCII 以及如何将其重新编码?

我觉得我可能完全错了,这段代码应该解码为汇编,但我真的不知道。无论如何,我该如何处理这段代码以确保我不会执行任意命令?

我对 C 语言完全陌生,但对 VB.net/C#/PHP 的了解足以应付危险。

PS 对于那些担心的人,我将在虚拟机中运行它。

答案1

Python 的 REPL在这种事情上很有效。

>>> "\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'

是的,几乎都是汇编语言。您需要一个反汇编器(或 CPU 数据手册和足够的耐心)才能读懂它。

答案2

非常数据库条目你指出给出原始汇编语言程序及其 C 语言等效程序,紧邻上方十六进制编码的原始机器码。它是超级H汇编语言。

答案3

将其解码为 ASCII 是无用的,因为它不是文本字符串 -\x0...字节映射到 ASCII 字符集中的控制字符,而不是可打印字符。

相关内容