buffer-overflow相关内容

利用缓冲区溢出

对于我的学习,我尝试创建一个有效负载,以使其溢出缓冲区并调用一个名为“目标”的“秘密”函数 这是我使用的代码用于在i686上进行测试 #include“ stdio.h” #include“ string.h” void target(){ printf(“ target\n”); } 无效漏洞(字符*输入){ 字符缓冲区[16]; strcpy(缓冲区,输入); ..
发布时间:2020-09-24 02:18:09 其他开发

有什么办法可以绕过SSP(堆栈粉碎保护)/ Propolice?

经过一番研究,我没有发现任何描述此方法的论文(甚至没有不可靠的论文)。似乎SSP(堆栈粉碎保护)/ Propolice 解决方案 Canary的安全性非常好,可以防止缓冲区溢出。多年以来,各种Canary实施都被打破,然后变得更加安全。重要的是,即使在Vista,Windows 7和Fedora 11上仍在利用高级内存保护缓冲区溢出…… 要提到的一个非常重要的事情是金丝雀只保护该函数 ..
发布时间:2020-09-24 02:18:07 其他开发

为什么我得到“无法找到当前函数的界限”?当我覆盖易受攻击程序的ret地址时?

我想出于教育目的而利用基于堆栈的缓冲区溢出。 有一个典型的函数,调用时带有main参数,该函数作为编程保存参数的本地缓冲区。给定这样的输入,即 nops + shellcode + address_shellcode ,我将利用它。 用gdb调试后,我发现了shell代码的地址,因为它将作为参数传递,并且在 strcpy 我检查了堆栈,返回地址 $ ebp + 8 已成功被shell代 ..
发布时间:2020-09-24 02:18:02 其他开发

当控件的类名非常长时,为什么会出现访问冲突?

我按顺序将控件子类化,以便可以添加一些我需要的字段,但是现在当我在运行时创建控件时,会出现访问冲突。不幸的是,这种访问冲突不会在我创建控件的地方发生,甚至在我启用了所有调试选项的情况下(包括“使用调试DCU进行构建”),堆栈跟踪也无济于事。全部! 在尝试重现该错误时,我尝试创建一个控制台应用程序,但很明显,此错误仅在Forms应用程序中显示,并且仅当我的控件实际显示在窗体上时! 以下是 ..
发布时间:2020-09-24 02:17:59 其他开发

堆溢出攻击

如何进行堆溢出攻击? 如果发生堆栈溢出攻击,攻击者将函数返回地址替换为其地址。 在堆溢出攻击中如何做到这一点?另外,是否可以从堆运行代码? 解决方案 请注意,这因平台而异,我的示例过于简化。基本上,归结为堆管理器具有可能会被溢出的链表,并且您可以使用链表指针来覆盖进程内存的随机部分。 想象一下我有一个朴素的堆实现,其控制块是这样的: struct HeapBloc ..
发布时间:2020-09-24 02:17:55 其他开发

内存覆盖问题

我有一个C代码应用程序。我使用MS-VS2005构建的。我有一个输出数据缓冲区,该缓冲区是使用malloc动态分配的。 对于某些测试用例,正在被malloc分配的内存大小小于实际大小生成的输出大小(以字节为单位)。较大的输出写入较小的缓冲区,从而导致缓冲区溢出。结果,测试运行崩溃,MSVS-2005出现一个窗口“堆损坏...”。 我知道这与某些问题有关动态内存分配,但是我花了很长时间才 ..
发布时间:2020-09-24 02:16:51 其他开发

这个缓冲区溢出的后果?

因此,在这里,我认为我在查看其他人的代码时发现了一个小的缓冲区溢出问题。它立即使我感到不正确,并且有潜在危险,但我承认我无法解释这种“错误”的实际后果,如果有的话。 我写了一个测试应用程序以演示该错误,但令我感到沮丧的是,无论溢出情况如何,它似乎都能正常运行。我想相信这只是偶然,但我希望得到一些反馈,以确定我的想法是否错误,或者这里是否确实存在问题,而这并没有在我的测试应用程序中显示出来。 ..
发布时间:2020-09-24 02:16:41 C/C++开发

缓冲区溢出不起作用

我试图在需要密码的简单程序上进行缓冲区溢出(我正在使用Linux)。程序代码如下: #include #include #include int check_authentication(char *密码){ int auth_flag = 0; char password_buffer [16]; ..
发布时间:2020-09-24 02:16:37 其他开发

缓冲区溢出如何用于利用计算机?

如何使用缓冲区溢出来利用计算机? 如何仅通过引起 stack 或堆溢出? 我了解程序内存的部分不应被覆盖,但是我看不到这如何导致人们执行自己的代码。另外,是否必须使用目标处理器的汇编语言编写第三者的恶意代码? 解决方案 这是关于该主题的最广为人知的文档:为乐趣和利润而粉碎堆栈 但是,“堆栈溢出”与缓冲区溢出无关。堆栈溢出通常只是错误代码中的一个错误情况,在崩溃(DoS)之 ..
发布时间:2020-09-24 02:16:33 其他开发

为什么某些语言未实现边界检查?

根据Wikipedia(http://en.wikipedia.org/wiki/Buffer_overflow) 通常与缓冲区关联的编程语言溢出包括C和C ++,它们没有提供针对访问或覆盖内存任何部分中的数据的内置保护,并且不会自动检查写入数组(内置缓冲区类型)的数据是否在该数组的边界内。边界检查可以防止缓冲区溢出。 那么,为什么在某些语言(例如C和C ++)中未实现“边界检查”? ..

我如何使用strncat而不担心缓冲区溢出?

我有一个缓冲区,我正在做很多strncat。我要确保我不会溢出缓冲区大小。 char buff [64]; strcpy(buff,“字符串1”); strncat(buff,“ String 2”,sizeof(buff)); strncat(buff,“ String 3”,sizeof(buff)); 我想说的是buff-xxx,而不是siz ..
发布时间:2020-09-24 02:15:30 其他开发

为什么此内存地址%fs:0x28(fs [0x28])具有随机值?

我已经编写了一段C代码,并对其进行了反汇编,还阅读了寄存器以了解程序在汇编中的工作方式。 int test(char * this){ char sum_buf [6]; strncpy(sum_buf,this,32); 返回0; } 我正在检查的代码片段是测试函数。当我反汇编我的测试函数的输出时,我得到... 0x00000000004005c0 ..
发布时间:2020-09-24 02:15:23 其他开发

输入无效的循环中的C scanf

我必须执行if语句,否则,如果设置了一些无效的输入(例如“ 17d”),它将陷入无限循环。为什么呢我认为有缓冲区但scanf会从stdin读取而不是从流中读取吗? int age; while(age!= 0){ printf(“您几岁?”); if(scanf(“%d”,& age)> 0){ printf(“您%d岁!\n”岁); }否则{ 休息; } } ..
发布时间:2020-09-24 01:07:45 其他开发

返回lib_c缓冲区溢出练习问题

我应该提出一个利用“返回libc缓冲区溢出"的程序.这是在执行时干净地退出并显示SHELL提示.该程序在bash终端中执行.下面是我的C代码: #include int main(int argc, char*argv[]){ char buffer[7]; char buf[42]; int i = 0; while(i ..
发布时间:2020-09-18 22:45:06 其他开发

QNX运行时错误:未知符号__stack_chk_guard

我正在尝试测试QNX 6.6.0和6.5.0之间的向后兼容性(以较早的 未知符号:__stack_chk_guard ldd:FATAL:无法解析所有符号 是什么原因造成的?.. (我已经找到了解决方案,但是它无法立即起作用.当我开始编写此问题时,我意识到我所犯的错误.为将来参考,我将在此处以Q& A本人提供解决方案). 解决方案 由于QNX使用的是gcc(qcc): ..