shellcode相关内容

使用外壳代码调用x86本地函数

我想使用将流重定向到本地函数,然后使用外壳代码返回到原始函数。 我定义了两个简单的函数,并使用objump来获取它们的汇编代码: // unsigned char *g_code = "x55x48x89xe5xb8x2ax00x00x00x5dxc3"; int g() { return 42; } // unsigned char *f_code_original = "x5 ..
发布时间:2022-09-21 10:43:38 其他开发

如果不将0作为execve的环境指针传递,为什么这个外壳代码会起作用?

https://www.exploit-db.com/exploits/46907 我的理解是,由于x64调用约定,execve的第三个参数envp应该存储在RDX中。但是这个外壳代码不会将该寄存器置零,它只会将RSI寄存器(存储ARV)置零。因此,如果RDX的当前值未指向有效位置,则会导致段错误,不是吗? 我是否遗漏了什么? 推荐答案 写rdx(带0):注意syscall ..
发布时间:2022-04-18 11:05:29 服务器开发

Linux 64位外壳代码

我正试图在我的64位Ubuntu上编写我的第一个“Hello world”外壳代码,但它不能工作。 我有文件hello.asm: ; 64-bit "Hello World!" in Linux NASM global _start ; global entry point export for ld section .text _start: ; ..
发布时间:2022-04-06 11:19:30 其他开发

为什么我会得到“找不到当前函数的边界"?当我覆盖易受攻击程序的 ret 地址时?

我想利用基于堆栈的缓冲区溢出来进行教育. 有一个典型的函数使用来自 main 的参数调用,该函数作为程序的输入提供给保存参数的本地缓冲区.给定一个 nops+shellcode+address_shellcode 的输入,我将利用它. 在使用 gdb 调试后,我找到了 shell 代码的地址,因为它将作为参数传递,并且在 strcpy 之后我检查了堆栈和 $ebp+8 已成功地被 sh ..
发布时间:2022-01-22 12:30:40 其他开发

为什么我的数据部分在编译后的二进制文件中出现两次?Ubuntu、x86、nasm、gdb、reaelf

之前的 相关问题已回答.谢谢!然而,这给我带来了一个新问题.为什么 nasm 将数据字节放在两个不同的内存位置?我在下面包含程序信息和其他数据转储. ---------- 使用 nasm, ld 编译的代码片段 -----部分 .text...零:jmp 短二一:流行ebxxor eax, eaxmov [ebx+12], eaxmov [ebx+8], ebxmov [ebx+7], 人lea ..
发布时间:2022-01-20 20:06:04 其他开发

我可以执行驻留在数据段(ELF 二进制文件)中的代码吗?

在理解二进制文件(虚拟内存布局、执行等)的过程中,我编写了一个 C 代码,它声明了一个包含可执行代码字节的全局字符串,然后我通过在 main() 中声明一个指针 (PTR),使用一个简单的技巧将 main() 函数的返回地址覆盖到该可执行代码这是在堆栈上保留的本地内存区域 2 WORDS 远离 main() 的返回地址,所以我所做的就是将返回地址的地址分配给该指针 (PTR=(int*)&PTR+ ..
发布时间:2022-01-12 16:17:36 其他开发

Shellcode 没有运行

我尝试通过 C 程序运行很多 shell 代码来测试它们.在这里 #include#includeunsigned char code[] = "shell here";主要的(){printf("Shellcode 长度: %d\n", strlen(code));int (*ret)() = (int(*)()) 代码;ret();} 这里是shell ..
发布时间:2022-01-12 16:00:33 其他开发

Linux Shellcode“你好,世界!"

我有以下有效的 NASM 代码: 全局 _start节.text_开始:移动 eax, 0x4移动 ebx, 0x1mov ecx, 消息移动 edx, 0xF整数 0x80移动 eax, 0x1移动 ebx, 0x0整数 0x80.data 节消息:db "Hello, World!", 0dh, 0ah 将“Hello, World!\n"打印到屏幕上.我还有以下 C 包装器,其中包含以前 ..
发布时间:2021-12-18 09:26:35 服务器开发

在栈上为execve创建一个arg数组

我想编写一个汇编程序,通过 EXECVE(系统调用 #0x3C)程序/bin/ls 和 -al 开关执行. 手册页 (man 2 execve) 指出调用需要三个值: int execve(const char *filename, char *const argv[], char *const envp[]); 我不太明白如何构建这三个参数.据我所知,第一个参数进入RDI,第二 ..
发布时间:2021-09-29 19:46:04 其他开发

如何在没有 0x00 或 0xFF 字节的情况下获取 x86_64 中的指令指针?

在汇编语言中,有没有一种方法可以在不使用 call 后跟 pop 的情况下访问指令指针 (RIP) 中的值?或者是否有可以做到这一点的机器代码操作码? 我一直在谷歌搜索,没有明确的结果. 我的问题是机器代码中不能有任何零,否则我会收到 SIGSEGV 错误.这是由于服务器加载代码并从一串字节执行它的方式.近调用在到子例程的距离上为零,因此不能选择使用调用. 我使用的是 64 位 ..
发布时间:2021-09-29 19:45:49 其他开发

有没有办法为不直接使用系统调用指令的sendfile编写shellcode?

我正在处理类似 ctf 的挑战,它正在过滤我的 shellcode,以确保我没有 syscall、sysenter 和 int 指令的十六进制值编码,分别为 0x0f05 0x0f34 和 0x80cd.基本上我有一个可以打开文件的shellcode,但它包含系统调用指令.任何有助于理解如何操作它的帮助,因此我仍然可以进行系统调用,而无需将序列 0x0f05 显式放入我的 shellcode 中. ..
发布时间:2021-09-04 18:42:34 其他开发

对 Windows 的缓冲区溢出攻击导致访问冲突

我刚刚开始研究缓冲区溢出攻击的工作原理,并尝试模拟对Windows 7 使用Visual C 2010.缓冲区溢出攻击非常做作,它只是将返回地址覆盖为“缓冲区"局部变量的地址.缓冲区保存着 shellcode 字符串. 无论我是否在 Visual Studio 2010 Debug 中运行程序,程序都会跳转到 shellcode 并几乎开始执行它,但我收到访问冲突错误,并且程序不会继续执行s ..
发布时间:2021-07-17 20:30:27 其他开发

简单 ASM 代码上的分段错误

对于我尝试在 ubuntu 64 位版本下创建 NASM 示例并在组装并链接到 ELF 后执行它时的问题.当我执行 时,它返回如下错误消息 NASM -f elf64 -o firstasm.o firstasm.asmld -o firstasm firstasm.o第一节 分段错误(核心转储) 我的 NASM 代码将在我尝试执行简单的 write() 和 exit() 函数的下 ..
发布时间:2021-06-07 18:45:12 其他开发