【发布时间】:2011-02-19 19:05:52
【问题描述】:
使用 C 程序评估一段示例 shellcode 并不复杂。它将涉及将 shellcode 存储在字符数组中,创建函数指针,对指针进行类型转换并使其指向数组并调用函数(指针)。
这就是它的工作原理,假设你可以在nastycode[]处执行内存:
/* left harmless. Insert your own working example at your peril */
char nastycode[] = "\x00\x00\x00...";
void (*execute_ptr) (void);
execute_ptr = (void *)nastycode; /* point pointer at nasty code */
execute_ptr(); /* execute it */
有什么方法可以使用 Python 代码来做同样的事情吗?或者 Python 代码转换为字节码的事实是否使这样的努力变得不可能?
【问题讨论】:
-
实际上,即使是您提出的 C 方法在现代平台上的工作量也越来越少。 en.wikipedia.org/wiki/NX_bit
-
您能否参考一个示例来说明您所描述的内容(使用 C 程序评估 shellcode)?这将有助于更轻松地回答您的问题。
-
绕过 NX 所需要做的就是分配一个读/写/执行页面。在 Windows 上,您将在调用 VirtualAlloc 时使用 PAGE_EXECUTE_READWRITE。 NX 仅在代码无法执行这样的分配时才有帮助。
-
@pyrony 这很简单,我已经编辑了问题以向您(和其他人)展示它是如何发生的。 @zubin71 我已将您的标题更改为更具描述性;如果您不喜欢它,或者希望更改我编辑的内容,请随意!
-
这不一定适用于“C”。指向代码和数据的指针可能占据完全不同的地址空间。
标签: python c security shellcode