如果想了解更多有关已发布的在 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
答案3
将其解码为 ASCII 是无用的,因为它不是文本字符串 -\x0...
字节映射到 ASCII 字符集中的控制字符,而不是可打印字符。