9得票4回答
为什么我会收到分段错误?(测试Shellcode)

我写了一个简单的ASM文件并在我编写的C文件中运行它。结果我遇到了一个段错误。但是,当我执行已编译的ASM文件时,没有错误发生。 我正在运行64位,并使用32位shellcode。这是问题吗? 不可能,因为我使用下面的代码却一直得到段错误: char shellcode[] = "\x9...

8得票2回答
缓冲区溢出中编译器的艺术

现代编译器GCC非常强大,甚至可以在编译阶段预防缓冲区溢出,这样操作系统就不能在堆栈空间上运行代码。 例如: void function(char *str) { char buffer[16]; strncpy(buffer, str, 256); } void mai...

8得票1回答
在汇编语言中,正确调用带有参数的execve应该如何实现?

我正在尝试使用 execve 执行以下操作:/ bin // nc -lnke / bin / bash -p 4444 阅读 execve 的手册时,我看到以下要求: int execve(const char *filename, char *const argv[], ...

8得票1回答
《黑客攻防技术宝典》一书中的缓冲区溢出示例

我正在阅读一本名为《漏洞利用艺术》的书,这是一本不错的书籍,我在 exploit_notesearch.c 文件中发现了一个例子。 简单来说,作者试图从 notesearch.c 中溢出程序。 int main(int argc, char *argv[]) { int useri...

8得票4回答
使用缓冲区溢出执行Shell代码

最近我一直在学习计算机安全,遇到了一些问题,特别是这个问题让我有些困扰。 我需要溢出一个带有固定缓冲区的函数,以便在文件shellcode中执行shellcode。这个函数非常简单: void vuln(char *str) { char buf[64]; strcpy(b...

8得票1回答
使用mmap在共享内存中执行shellcode

我正在尝试将程序代码放置并执行到共享内存区域。初始化和分配共享内存以及将shellcode复制到“新”内存中的操作都按预期进行,但是一旦我尝试执行它,它就无法正常工作。有人有什么想法可能是问题所在吗? 我认为write(1, 0x6000d8, 13) = -1 EFAULT(Bad add...

7得票2回答
在Visual C++中,通过将shellcode转换为函数指针来执行它。

在gcc中,这个很好用。代码大致如下: unsigned char b[50] = "\xda\xd1 ... \x0"; //some shellcode with terminating \x0 ( (void(*)())b )(); //cast b to function point...

7得票2回答
无 NULL 的 shellcode

我正在尝试将我写的汇编程序转换为无 NULL 的 shellcode。 但是,对于某些指令,我不确定该如何进行操作。 其中一些指令(使用 Intel 语法)包括: push 0x1000 并且 mov BYTE [eax],0x31 我希望避免使用成千上万次的inc eax指令。...

7得票1回答
如何将Shellcode分解成汇编指令?

有没有一种将原始十六进制指令转换成汇编指令的工具?例如:假设我们有\xeb\x1d,根据这个在线反汇编器,它反汇编为jmp 0x1f。那么是否有离线工具可用?我已经尝试过ndisasm,但它没有给我正确的输出。ndisam -b32 foo 给我的输出如下: 00000000 5C ...

7得票2回答
x86汇编:文本段中的数据

我不太明白变量如何存储在文本部分以及如何操纵它们。难道所有变量都应该在.data部分中,并且所有部分都是只读的吗?那么这段代码是如何运作的呢? [从《Shellcoder's Handbook》中提取的代码] Section .text global _start _start: ...