buffer-overflow相关内容
我正在研究这个我正在研究的项目。我的主要目标是将两个网络摄像头拼接在一起并对它们进行物体检测 - 边界框等......标准的东西。 我无法摆脱虽然缓冲区溢出 - 下面稍微简化的代码(为了便于阅读)编译x64并且在我收到缓冲区溢出错误之后很快就会出现这种情况: “OpenCV错误:断言失败(contour.checkVector(2)> = 0&&(contour.depth()== C
..
我试图通过重定向输入(得到)使用run
..
我试图用一些shellcode产生一个shell。有效负载在程序本身,但是,当我运行然后单独编程时,我得到一个分段错误,但是当在gdb中运行时,我的shell会打开。 有人可以指出问题的症结所在吗? MrMox @ ubuntu:〜/文件夹$ ./a。 out hh 分段错误(核心转储) MrMox @ ubuntu:〜/文件夹$ gdb -q a.out 读取/home/fo
..
我现在正在阅读(第二次)“黑客攻击的艺术”,并且偶然发现了一些东西。本书提出了两种不同的方式利用这两个类似的程序: auth_overflow 和 auth_overflow2 在第一个,有一个像这样的密码检查功能 int check_authentication(char * password){ int auth_flag = 0; char password_buffer
..
#include
void main(int argc,char ** argv){ char buf [100]; strcpy(buf,argv [1]); printf(“Done!\\\ ”); } 我试着编译所有各种标志以删除堆栈保护 gcc -o vuln
..
什么样的GCC选项可以提供最佳的防范内存损坏漏洞,例如缓冲区溢出和悬挂指针? GCC是否提供任何类型的ROP链缓解?是否有性能问题或其他问题妨碍GCC选项在生产中的任务关键应用程序上运行? 我正在查看 Debian Hardening Guide 以及 GCC Mudflap 。以下是我正在考虑的配置: -D_FORTIFY_SOURCE = 2 -fstack-protecto
..
有没有办法可以发出非ASCII ASCII字符到一个scanf,使用%s ?我尝试插入十六进制字符,如 \x08\xDE\xAD 等等(以演示缓冲区溢出)。 输入的不是一个命令行参数,而是一个到程序里面的scanf。 解决方案 假设你想在stdin上提供任意数据(因为你使用 scanf )读取数据。) 你可以使用shell以创建数据并将其传送到您的程序中,例如 prin
..
注意:我知道ffmpeg和libav是不同的库的。这是一个常见的问题。 免责声明:重复的
..
我尝试了此问题提供的代码,但它不工作。 如何设计溢出来包装我的头? .file“hw.cpp” .section .rdata,“dr” LC0: .ascii“Oh shit really bad〜!\15\12\0” .text .align 2 .globl __Z3badv .def __Z3badv; .scl 2; .type 32; .endef
..
我尝试了此问题提供的代码,但它不工作。 如何设计溢出来包装我的头? .file“hw.cpp” .section .rdata,“dr” LC0: .ascii“Oh shit really bad〜!\15\12\0” .text .align 2 .globl __Z3badv .def __Z3badv; .scl 2; .type 32; .endef
..
我将双值转换为字符串,如下所示: std :: string conv(double x){ char buf [30]; sprintf(buf,“%.20g”,x); return buf; } 我已将缓冲区大小硬编码为30,但不知道这是否足够大的所有情况。 如何找出我需要的最大缓冲区大小? (因此缓冲区需要增加)从32位切换到64位时
..
我将双值转换为字符串,如下所示: std :: string conv(double x){ char buf [30]; sprintf(buf,“%.20g”,x); return buf; } 我已将缓冲区大小硬编码为30,但不知道这是否足够大的所有情况。 如何找出我需要的最大缓冲区大小? (因此缓冲区需要增加)从32位切换到64位时
..
Visual Studio 2013 C ++项目具有 / GS 切换,可在运行时启用缓冲区安全检查验证。我们在升级到VS 2013后遇到更多STATUS_STACK_BUFFER_OVERRUN错误,并怀疑它与新编译器中缓冲区溢出的改进检查有关。我一直在试图验证这一点,并更好地了解如何检测缓冲区溢出。我感到困惑的事实,缓冲区溢出报告,即使内存更新的语句只更改在同一范围内的堆栈上的另一个局部变量的
..
我有以下两个函数用于发送和接收数据包。 void send(std :: string protocol) { char * request = new char [protocol.size()+ 1]; request [protocol.size()] = 0; memcpy(request,protocol.c_str(),protocol.size()); r
..
在从函数A()调用函数B()期间,B()分配100个字符的数组并填充它多次,包括一个101字符的字符串和一个110字符的字符串。这是一个明显的错误。 后来,函数A()试图访问完全不相关的int变量i,发生分段错误。 我理解为什么发生缓冲区溢出,但是为什么当我访问这个整数时会出现分段错误? code>调用 B(),B的前导码指令保存A的帧指针 - 堆栈上A保存局部变量的位置,然后用B自己
..
我听说过一个缓冲区溢出,我想知道如何导致一个。 有人可以告诉我一个小缓冲区溢出示例吗? 新的(他们用于什么?) 解决方案 缓冲区溢出基本上是当一个缓冲区)写入其预期界限之外。如果攻击者可以设法使它从程序外部发生,它可能会导致安全问题,因为它可能允许他们操纵任意内存位置,虽然许多现代操作系统防止最坏的情况下。 虽然在缩进边界之外的读取和写入通常被认为是一个坏主意,但是术语“缓冲
..
我想,以避免在下面的程序缓冲区溢出漏洞, INT主(INT ARGC,CHAR *的argv []){ 诠释有效= FALSE; 炭STR1; [8] CHAR STR2 [8]; next_tag(STR1); 得到(STR2); 如果(STRNCMP(STR1,str2,8)== 0) 有效= TRUE; 的printf(“缓冲:STR1(%S),STR
..
我有以下的code: INT主(INT ARGC,CHAR *的argv []) { 炭通道[10]; 的printf(“字符串最大10 ::”);得到(CH); 的printf(“字符串:%S \\ n”,CH); 返回0; } 当我与“12345678”运行此为 CH 运行良好。奇怪的是,当我和“123456789012345678901234567890”
..
我试图写一个非常简单的程序,突出了一个缓冲区溢出漏洞如何可以用于绕过密码保护系统。该code为如下: 的#include<&stdio.h中GT; #包括LT&;&string.h中GT;INT主要(无效) { 字符的buff [15]; 炭tempbuff [15]; INT通= 0; 的printf(“\\ n输入1到15个字符之间的长度的密码:\\ n”
..
很多时候,我有一个缓冲区溢出问题。 INT Y [10] [10] [10]; ... Y [0] [15] [3] = 8; 我 如何prevent这个问题? 有没有什么好的工具,可以帮助我吗? 解决方案 尼尔的答案是在一般情况下比较好,但如果你有使用普通的旧数组的一个原因,你可以使用函数来获取和设置的值,也请确认您使用的数组边界内的:的#define MAX_INDEX 10
..