buffer-overflow 相关问题

通常在尝试将数据复制到缓冲区而不检查足够的空间时会发生,从而导致数据被覆盖在相邻的单元格中。

为什么在 b 用 &f(32 位 MSVC 调试版本)覆盖其返回地址后,函数 b 和 f 在此代码中被调用*两次*?

我有一个非常奇怪的代码,据我了解,它替换了函数b的返回地址,从而从它调用函数f。但我不太明白为什么在功能之后...

回答 1 投票 0

会从<iostream.h>变为<iostream>导致缓冲区溢出?

我需要在我的办公室计算机上构建一些旧代码,该计算机安装了 gcc 4.4.5。我编辑了代码(删除 .h 或添加诸如 之类的内容)以使它们保持最新,所以...

回答 1 投票 0

C++ 缓冲区溢出在 3 台机器上不同

我正在用 C++ 测试一个简单的缓冲区溢出。该示例是一个测试,假设检查未到位,恶意用户可能会使用缓冲区溢出来覆盖变量。 该示例定义...

回答 2 投票 0

将结构编码为字节到缓冲区时发生溢出

我编写了这个函数,该函数应该将数据结构写入字节缓冲区,然后返回已写入的数量。该函数执行以下操作: 要求输入一个字节缓冲区(char *)...

回答 1 投票 0

对于缓冲区溢出渗透测试,calculator.exe shellcode 将无法在 python 文件中运行

我正在尝试缓冲区溢出渗透测试,其想法是最终让计算器执行。一切正确后,例如计算溢出缓冲区和反应所需的字节......

回答 1 投票 0

RIP 的缓冲区溢出奇怪行为

我在测试时运行 test i gdb 以利用缓冲区溢出: (gdb) r $(python3 -c 'print(b"\x41"*152+"\x42"*6 )') (gdb)我 ... rbp 0x4141414141414141

回答 1 投票 0

如何在 pwn 攻击中通过 netcat 发送二进制负载

通过 netcat 连接到漏洞利用服务器时,服务器会提示输入。我已经在二进制文件有效负载中制作了有效负载,如何将其发送到服务器。我尝试过猫有效负载|数控... ...

回答 2 投票 0

利用缓冲区溢出如何在linux中使用gdb执行overflowed()函数?

#包括 #包括 无效溢出(){ printf("%s ”,“执行被劫持”); } 无效函数1(字符* str){ 字符缓冲区[5]; strcpy(b...

回答 1 投票 0

缓冲区溢出如何执行堆栈上的指令?

我读过一些有关缓冲区溢出的内容,我不明白的一件事是,据我所知,通常空间无法执行,放置在其中的代码如何运行?

回答 1 投票 0

利用缓冲区溢出

我遇到过一个存在缓冲区溢出缺陷的 C 程序。 我们需要让这个计划按照我们的方式运作。根据我的理解,缓冲区溢出会覆盖下一个内存位置......

回答 2 投票 0

我可以使用哪些输入来利用该程序中的缓冲区溢出来执行 win() 函数

我想利用程序某些方法中的溢出来运行另一个函数win() #define MAX_PRIORITY_STRSIZE 10 /* len(str(2**32)) */ #定义MAX_TITLE_SIZE 0x20 #定义 MAX_TODOS 0x30 沃...

回答 1 投票 0

如何成功测试这个用 C 编写的简单缓冲区溢出?

我正在尝试从 StackOverflow 测试这个示例(how-can-i-invoke-buffer-overflow),但我没有成功。 两周前我还直接在帖子上要求澄清(通过 c...

回答 1 投票 0

无法覆盖EIP寄存器

上下文 我正在 Linux 中创建一个容易受到缓冲区溢出攻击的应用程序来练习此类漏洞(创建和利用),但我陷入了这部分。 我的问题 我无法结束...

回答 1 投票 0

了解 x86 系统上函数调用中的堆栈帧和堆栈布局

我目前正在探索堆栈帧以及它们如何在 C 程序中工作,特别是在未受保护的 32 位 x86 系统上(没有 ASLR、堆栈金丝雀或 DEP)。我主要不是一名计算机科学学生——我是一名物理学学生

回答 1 投票 0

C++ 使用容器注释包装器检测内存缓冲区溢出不起作用

我正在尝试使用容器注释包装器强制 ASan 检测从堆栈分配内存的指针的缓冲区溢出。 下面是我的例子 #包括 我正在尝试使用容器注释包装器强制 ASan 检测从堆栈分配内存的指针的缓冲区溢出。 下面是我的例子 #include <sanitizer/asan_interface.h> #include <iostream> #include <array> constexpr size_t N = 32; class A { public: int x; }; int main() { char buf [sizeof(A)]; A *a = new (buf) A; __sanitizer_annotate_contiguous_container(buf, buf + sizeof(A), buf, buf + sizeof(A)); a->~A(); a[sizeof(A) + 64].x = 4; std::cout << a[sizeof(A) + 64].x << std::endl; } 为什么消毒剂没有检测到内存违规? 演示 首先,你似乎错误地使用了__sanitizer_annotate_contiguous_container。它的签名是: void __sanitizer_annotate_contiguous_container(const void *beg_p, const void *end_p, const void *old_mid_p, const void *new_mid_p) 因此,当您发布a时,您希望将其标记为 __sanitizer_annotate_contiguous_container(buf, buf + sizeof(A), buf + sizeof(A), buf); 其次,ASAN 不报告堆栈溢出的原因似乎是 ASAN 仅将超出帧边界的 3 个影子字节(24 个实际字节)标记为不可寻址,这可以通过查看轻松找到错误时的影子字节: https://godbolt.org/z/Mxz7qxhfo 在这里,您在帧开始之后的 (sizeof(A) + 64) * sizeof(A) = 272 字节或帧结束之后的 264 字节处对堆栈进行寻址,因此不会引发错误。如果您在堆上分配 buf,因为 ASAN 在堆分配上标记了更宽的红区,您会发现正确报告了内存违规,但原因是“堆溢出”,而不是“容器溢出”。

回答 1 投票 0

ARM64 缓冲区溢出 - 无法覆盖 $pc

这是源代码。 #包括 #包括 #包括 #包括 无效胜利() { printf("代码流程更改成功 ”);...

回答 2 投票 0

C 中 0x00001292 导致堆栈帧溢出

我正在关注一本有关黑客攻击的书,目前正在研究缓冲区溢出。我的silly_password.c 程序采用一个命令行参数,该参数溢出到函数的返回地址中。我已经...

回答 1 投票 0

如何启用 GDB/GEF 以允许我在插入离散输入时查看堆栈如何变化?

我试图通过 pwntools 和 gdb 来识别发生缓冲区溢出的偏移量。 这是 C 代码 (x64): 整数输入[8]; int 计数,数字; 计数=0; 同时(1) { printf("输入: &

回答 1 投票 0

为什么 fgets() 需要用户输入的最大大小?是不是因为它没有scanf()的“限制到第一个空格”属性?

这是fgets()的官方原型: char *fgets(char *str, int n, FILE *stream); 为什么要指定尺寸?是为了防止某种缓冲区溢出吗?或者这只是一个设计缺陷? 我想...

回答 1 投票 0

GCC 是否生成 Canary?

我的gcc版本是4.8.2,操作系统是ubuntu 14.04(64位)。 我发现有时gcc会自动生成金丝雀来进行缓冲区溢出保护,有时却不会,为什么? 案例生成可以...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.