18得票1回答
GCC是否生成Canary?

我的gcc版本是4.8.2,操作系统是ubuntu 14.04(64位)。 我发现有时候gcc会自动生成canary以进行缓冲区溢出保护,有时却不会。为什么? 生成canary的情况:当SIZE是4的倍数时。#include<stdio.h> #define SIZE 4 int...

149得票5回答
为什么这段代码容易受到缓冲区溢出攻击的影响?

int func(char* str) { char buffer[100]; unsigned short len = strlen(str); if(len >= 100) { return (-1); } strncpy(bu...

20得票4回答
缓冲区溢出攻击

我正在尝试执行一个非常简单的缓冲区溢出攻击。我对此基本上是新手。因此,如果这个问题很蠢,请原谅我 :-) 代码:#include<stdio.h> #include<stdlib.h> int i, n; void confused(int i) { prin...

19得票5回答
缓冲区溢出如何用于攻击计算机?

缓冲区溢出如何被用来攻击计算机? 通过引起栈或堆溢出,一个人如何能够执行任意代码? 我理解程序内存的一部分被覆盖了,但我不明白这怎么会导致一个人执行自己的代码。此外,第三方恶意代码必须是用目标处理器的汇编语言编写的吗?

8得票3回答
缓冲区溢出攻击:为什么“jmp esp”需要位于DLL中?

我试图理解经典的缓冲区溢出漏洞,即输入缓冲区覆盖堆栈、保存在堆栈上的函数返回地址和上部内存区域(通常用于放置shell代码)的情况。互联网上有许多这方面的例子,我认为我已经理解得很好了: 1. 输入数据超过开发人员设定的固定大小的输入缓冲区。 2. 溢出的输入将覆盖堆栈上调用函数的函数参数和...

9得票2回答
破解堆栈示例3.c的困惑

文章可以在这里找到。 我正在学习关于栈溢出的内容,并发现自己卡在了example3.c这个例子上。 0x80004a3 <main+19>: call 0x8000470 <function> 0x80004a8 <main+24>: a...

41得票7回答
编写安全的C语言和安全的C语言习惯用法

"普通人不想要自由,他只是想要安全。" - H. L. Menken 我正在尝试编写非常安全的C代码。以下列出了我使用的一些技术,并询问它们是否像我认为的那样安全。请不要犹豫,将我的代码/预设彻底摧毁。任何发现甚至最微小漏洞或教给我新思路的答案都将受到高度重视。 从流中读取: 根据GNU...

10得票3回答
boost::asio::buffer:如何获取缓冲区大小并防止缓冲区溢出?

我有以下两个用于发送和接收数据包的函数。 void send(std::string protocol) { char *request=new char[protocol.size()+1]; request[protocol.size()] = 0; memcpy...

12得票2回答
没有函数包含所选帧的程序计数器

我试图对一个易受攻击的代码进行缓冲区溢出攻击。但似乎出了些问题,尽管我的攻击字符串没有破坏堆栈,但我的嵌入式汇编代码却无法运行。以下是我想要攻击的程序在执行“ret”指令之前的内存值片段。0x55683984: 0x5568398c 0x...(old r.a) 0x68...

76得票2回答
NOP sled是如何工作的?

我找不到一个能很好回答这个问题的来源。我知道nop sled是一种用于绕过缓冲区溢出攻击中的堆栈随机化技术,但我无法理解它是如何工作的。 能给出一个简单的例子来说明这种方法吗? 像128字节的nop sled这样的术语是什么意思?