问题标签 [buffer-overflow]

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 投票
1 回答
686 浏览

gdb - 无法设置断点

我试图获取的起始地址buf。所以我编译了以下程序并将其加载到 gdb 中。

在拆卸时main,我们得到: -

为了找到 buf 的起始地址,我需要查看正在加载的地址eax0x080483e5当我在或设置断点时,0x080483ee我得到以下信息。

我究竟做错了什么?为什么程序执行不在该地址处暂停?

0 投票
1 回答
3602 浏览

gdb - gdb 输入文件中的十六进制值

我正在尝试通过在 gdb 中使用 run < inputfile 重定向输入(以获取)来解决 DVL 上的特定漏洞

我可以成功溢出程序,但是在将十六进制值附加到字符串时遇到问题。我尝试了引号,将 mem addr 的值转换为 ascii 和各种转义尝试(\,\,\),但没有运气

输入文件示例:AAAA\x42

在上面的示例中,反斜杠似乎被读取为 ascii char (5c) 并且值 42 保留在堆栈中(奇怪?)。

如何在 gdb 输入文件中指定一个十六进制值?

谢谢

0 投票
1 回答
4452 浏览

c - 返回 libc - 问题

我遇到了 return-to-libc 漏洞利用的问题。问题是什么都没有发生,但没有分段错误(是的,我实际上溢出了堆栈)。

这是我的程序:

我使用gets而不是strcopy,因为我的地址以0x00开头,而strcpy认为它是字符串的结尾,所以我不能使用它。

以下是我需要的地址:

输入正确的序列时,会发生这种情况:

所以什么都没有。

但是如果我输入 520 'A's (0x41),那么 EIP 就会被 'A's 溢出。如果有 516 'A',则没有任何反应,但 EIP 包含系统地址,在退出地址之后,在 /bin/sh 指针之后。

为什么什么都没发生?

0 投票
6 回答
14627 浏览

c - 如何找到缓冲区溢出和内存损坏的位置?

valgrind 找不到任何有用的东西。我很困惑。

症状:

  1. 我的数据被 malloc() 调用损坏了
  2. 我的函数的返回地址被错误替换

PS:代码没有段错误

目前,我通过mmap()+替换所有 malloc() 取得了一些进展mprotect()

0 投票
2 回答
229 浏览

system - 如何在 C 中停止溢出文件描述符

我正在向 88kb 的文件描述符写入一条消息。我的 linux 系统上的文件描述符只能容纳 64kb。一旦数据被放在文件描述符上,它就会被读取并通过管道传输到 tcp 连接中。

我怎么知道我是否可以向文件描述符写入更多数据,这意味着文件描述符是空的?我需要一个函数来阻止文件描述符为空,或者至少可以返回一个值,让我知道如何安全地将数据写入文件描述符。

0 投票
2 回答
1058 浏览

c - 缓冲区溢出的 C 代码问题

我正在编写一个小型 tcp echo 服务器来测试 Linux 上的缓冲区溢出。我有两个略有不同的服务器代码版本。当一个过大的缓冲区被发送到第一个缓冲区时,它会在读取函数中按预期溢出,从而导致分段错误。对于代码的第二个版本,我在接受、读取和写入函数周围添加了一个 While (1) 循环,以便服务器在正常使用下不会退出,但是当相同的缓冲区被发送到第二个服务器时,没有溢出并且服务器根本不会崩溃。我无法弄清楚为什么,代码与 while 循环相同。任何帮助将不胜感激。:)

服务器 1

服务器 2

0 投票
2 回答
9194 浏览

c++ - STATUS_STACK_BUFFER_OVERRUN 与 LoadLibrary

当我使用 LoadLibrary 加载 iphlpapi.dll 时,我的堆栈缓冲区溢出!我怎么解决这个问题?!

lib 函数的加载和执行工作正常,但有时我的程序会抛出 STATUS_STACK_BUFFER_OVERRUN 异常!(某些点:当我评论字符串操作时,错误会在几行之后发生)

当我不使用 LoadLibrary 和 GetProcAddress(static binding) -> 没有缓冲区溢出!

谢谢和问候,

leon22

0 投票
1 回答
3279 浏览

android - 在Android中使用缓冲区将http请求响应转换为字符串-没有得到整个响应

我正在开发一个发布到网站的应用程序,并且我正在尝试将实体响应存储为字符串。但是,该字符串似乎只包含一小部分响应,大约 35 行左右。我想知道它是否与缓冲区溢出有关,但我真的不确定。我的代码如下:

isBlankString 只记录一行是否不包含任何字符,因为响应中有很多空白行让我感到困扰。无论有没有这个,我都没有得到整个回应的问题。任何机构都知道发生了什么或如何解决这个问题?

谢谢

0 投票
4 回答
3311 浏览

c - 如何在 C 中跳过执行缓冲区溢出的行

我想跳过 C 中的一行x=1;,主要部分中的行使用bufferoverflow; 但是,我不知道为什么我不能将地址从4002f4下一个地址跳过4002fb,尽管我正在计算 7 个字节<main+35>的形式<main+42>

我还在 Debian 和 AMD 环境中配置了 randomniZation 和 execstack 环境的选项,但我仍然得到x=1;. 这个程序有什么问题?

我使用 dba 来调试堆栈和内存地址:

0 投票
1 回答
1437 浏览

c - 缓冲区溢出攻击格式

通常我们都会看到基本的缓冲区溢出格式:- NOPs + shellcode + return_address

我们为什么不使用, NOPs + return_address + shellcode?我们将返回地址指向 shellcode 的开头?

我猜这是因为如果漏洞在 main() 中,我们可能会尝试在堆栈段之外写入数据。我对吗?如果我是,这是唯一的原因吗?

哦,是的,我不是指使用 return-to-libc、ptrace 等的其他类型的攻击;我只是想知道为什么最基本的缓冲区溢出攻击以第一种方式演示,而不是无处不在。