问题标签 [buffer-overrun]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
38 浏览

c - 用于可变宽度访问的类型转换数组

对不起,我不确定我是否准确地写了标题。

但首先,这是我的限制:

  1. Array[],用作寄存器映射,被声明为一个无符号的 8 位数组 (uint8_t),这样索引(偏移)是每个字节的。
  2. 要读取/写入数组的数据具有不同的宽度(8 位、16 位、32 位和 64 位)。
  3. 非常有限的内存和速度是必须的。

执行以下操作有哪些注意事项

我知道我可以尝试按字节写入数据,但是由于位移,这会很慢。

这种用法会不会有很大的问题?我已经在我的硬件上运行了它,到目前为止还没有发现任何问题,但我想注意这个实现可能导致的潜在问题。

0 投票
1 回答
69 浏览

c++ - 从头开始编写 heapify 函数,获得“基于堆栈的缓冲区溢出”

我第一次尝试实现堆排序算法,但是 heapify 函数出现错误。

Unhandled exception at 0x0005369A in heapify.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.

控制台确实打开了,输出是999 10 5 11 1012398875 2 0 1.

有人可以帮我理解这里出了什么问题吗?谢谢你。

0 投票
1 回答
323 浏览

c - 缓冲区溢出攻击,不执行shellcode

我正在学习道德黑客,所以我正在做简单的溢出堆栈攻击来覆盖保存的返回指针。这是我的易受攻击的程序(编译时没有金丝雀和 NX 保护,

) 和程序,它创建缓冲区(NOP__SHELLCODE__RET)并调用易受攻击的程序。一切都很简单,但是不工作-_-。溢出正在工作,但未执行后的 shellcode,但在易受攻击的程序中保存的返回指针处于 NOP 上。
易受攻击的程序(command.c):

利用(exploit.c):

正如我所注意到的,shellcode 执行 /bin/sh 所以有理由看看我最喜欢的 gdb 的说法;)

一切都应该工作,因为我们已经将保存的返回指针(0x00005555555551f4)覆盖到 NOP,但是没有执行 shellcode。有什么问题?

0 投票
0 回答
30 浏览

c - 缓冲区溢出漏洞演示

我正在尝试通过缓冲区溢出来查看堆栈粉碎。更准确地说,我正在尝试更改堆栈中的返回地址,以便返回而不是调用调用函数,将控件重定向到我的代码。但我的半生不熟的知识似乎正在妨碍我。我的代码如下:

我显然希望函数“virus”的执行,而不是在“func”执行后控制返回到 main()。我的编译命令是:

另外,我禁用了内核的地址空间随机化选项。我尝试输入 12345678911111111111111110x7ffc7829bb36(即 1-9 后跟 16 个 1)。原因是 9 字节缓冲区 + 8 字节地址指针 + 8 字节旧帧指针(总共 16 个 1)。最后的十六进制是在“缓冲区”变量的地址上加上 16 个字节的结果。执行后,控件并没有回到主功能,但它也没有回到我的“病毒”功能。显示来自“func”的消息,然后附加一个段故障消息。这里可能有什么问题?我的猜测是,即使使用 gdb 调试器,我也不知道如何计算目标地址。任何帮助都会对我有用。谢谢

0 投票
1 回答
35 浏览

c - 如何解决 ac 程序中的缓冲区溢出错误/警告(如这个)?

我必须做一个将两个字符串链接在一起的程序,这就是我所做的:

我已经初始化了两个变量,它们应该存储字符串的长度。我检查了 NULL 指针异常。我数过琴弦。我已经动态分配了足够的内存来存储每个字母,以及 NULL 指针。我已将每个字符放入结果字符串中。

但是这些行中存在缓冲区溢出问题:

这不是我第一次遇到这种错误/警告,每次遇到这种警告我都不知道如何进一步解决它,即使我尝试将变量类型从较小的更改为较宽的一、问题依旧。

当你遇到这种错误时,你的方法是什么?你会怎么做才能修复它?你有清单吗?

这是最小的可重现示例: