buffer-overflow相关内容
我正在使用ROPchain进行练习,并且我有一个非常简单的程序,无法在其中成功调用“易受攻击"功能: #include#include#include无效vuln(int a,int b){如果(a == 0xdeadbeef&& b == 231){系统("/bin/sh \ 00");}}int main(){char buf
..
我有这段代码并与Flawinder一起运行,并且在read()函数上获得了此输出:“如果在包括递归循环的循环中使用,请检查缓冲区边界" 任何人都可以看到问题吗? ** #include void func(int fd) { char *buf; size_t len; read(fd, &len, sizeof(len)); if (len > 102
..
缓冲区溢出似乎是导致安全漏洞的最大原因之一。我很少使用C / C ++编程(仅用于某些课程),所以我可能会遗漏一些东西,但我不明白为什么人们继续使用允许溢出的数据结构。为什么所有数据结构都装满后不会引发异常?似乎这个简单的解决方案将大大提高软件的安全性。 解决方案 无知 很大比例的程序员(在我看来可能是对世界的负面偏见中)根本不了解安全问题或根本不了解哪些数据他们使用的结构很脆弱
..
#include #include #include int main(int argc,char ** argv){ char命令[50] =“ echo”; strcat(command,argv [1]); //连接输入,以便最终命令为“ echo” system(command)
..
可能重复: 数组溢出(为什么这样做?) 我发现一些C ++代码可以执行以下操作: struct Test { int a [ 128]; char b [768]; }; int main() { 测试测试; for(int i = 0; i test.a [i] = 1; 返回0; } 我知道这是错误的。但是,我想知道会有什么
..
我有一个实验任务要坚持。基本上,我必须利用缓冲区溢出来生成具有root特权的shell。我必须使用2个单独的.c文件。这是第一个: stack.c #include #include #include int bof(char * str) { char buffer [12]; // BO漏洞 s
..
我正在通过串行端口从微控制器接收消息。我使用9600的波特率。我有一个使用win32 API编写的程序,用于接收消息。有时会发生以下情况:我无法接收消息,然后在按Ctrl + C时突然出现突发。 如何清除串行缓冲区,以便避免数据泛滥? 谢谢 解决方案 PurgeComm 函数即可。 在Windows中使用串行端口时, Comm Port API参考非常有用。
..
有人告诉我,转换为目标代码“ xeb\xfe”的指令“ jmp short 0x0”会导致一个过程永远循环。 解决方案 这个问题看似模棱两可,但值得怀疑的是,原因是该指令会引起自己跳回去。 \xeb\xfe 的字面意思是“从下一条指令的开头向前跳转-2个字节”。由于该指令本身是2个字节长,因此跳转目标将是跳转指令本身。
..
我编写了一个非常简单的程序来尝试检查与缓冲区溢出相关的未定义行为。具体来说,关于在分配的空间之外执行数据读取时会发生什么情况。 #include #include int main(){ int值[10]; (int i = 0; i
..
我正在学习Linux x86二进制文件中的缓冲区溢出漏洞利用。我正在执行经典的堆栈粉碎操作,通过禁用ASLR并通过禁用NX位和堆栈金丝雀来在Ubuntu 12.04 VM中生成根外壳。 在执行过程中返回地址被覆盖并且shellcode正在执行,但是我没有得到root shell,而是导致了bash shell。 为减轻bash保护,我我正在使用zsh shell,并且删除了sh-> b
..
我正在做一个关于C程序中缓冲区重载的练习,这个问题的目的是在我将 shellcode 插入到程序。这是我到目前为止所拥有的: 步骤1:首先,让我们在名为file.c的文件中查看我的C代码: root @ kali:〜#cat ./file.c #include #include void premio() { printf
..
我正在尝试使用ubuntu 12上的终端进行编译: #include #include main() { / *声明参数数组* / char * args [2]; args [0] =“ / bin / bash”; args [1] = NULL; execve(args [0],args,NUL
..
我已经开始阅读有关缓冲区溢出以及黑客如何使用其执行自定义代码(而不是常规的已编译代码)的信息,现在,我正在尝试重现一些基本情况,它具有一个脆弱的功能,该功能可以将数据复制到char数组中。 要点是,当我使用程序中定义的函数的汇编指令之一更改返回地址时,它可以正常工作,而当我直接以字节为单位注入代码时,它返回SEGMENTATION FAULT。 我正在使用Kali发行版x64 v3.1
..
我们正在计划使我们的应用程序能够识别Unicode,并且我们正在分析遇到什么问题。 特别是,我们的应用程序将示例严重依赖字符串的长度,我们想使用 wchar_t 作为基本字符类。 出现问题处理必须在UTF-16中以2个16位单位存储的字符时,即U + 10000以上的字符。 简单示例: 我有UTF-8字符串“蟂”(Unicode字符U + 87C2,在UTF-8中为E8 9
..
我正在练习一些缓冲区溢出技术, 在发送存储的数据时遇到了一个奇怪的问题。 我有这两个几乎相同的代码,除了 这个事实,在Python3代码中,我更改了sock.send以对 字符串进行编码(在Python2中,您不需要这样做) Python2代码: import socket,sys sock = socket.socket(socket.AF_INET,socket.
..
我正在尝试通过覆盖main的返回地址来为exit(0)调用执行此简单操作码。 问题是我遇到了分段错误。 #include char shellcode [] =“ / 0xbb / 0x14 / 0x00 / 0x00 / 0x00” “ / 0xb8 / 0x01 / 0x00 / 0x00 / 0x00” “ / 0xcd / 0x80 “;
..
我意识到使用python 3进行漏洞利用开发并不像使用python 2那样直接。 据我了解,这主要是由于套接字库以及添加的 byte 数据类型。 例如,我不知道如何将以下代码转换为Python 3个代码: --- SNIP --- shellcode =“”“ shellcode + =” \x89\xe2\xd9\xcf\xd9\x72\xf4\x5a\x4a\x4a
..
我正在使用下面的代码通过使searchstring变量溢出来执行一些存储在环境变量中的shellcode,以便main的返回地址包含anvironment变量的地址。但是,我在printf命令之前遇到了分段错误。 #include #include void main(int argc,char * argv []){ char
..
请考虑以下易受攻击的代码/程序: #include int main(int argc,char * argv []){ char buf [16]; strcpy(buf,argv [1]); 返回0; } 在运行NX和Linux的IA-32(x86,32位)上启用ASLR后,我将使用GOT覆盖技术来利用此技术,该技术主要包括
..
我刚刚发现有一个STATUS_STACK_BUFFER_OVERRUN和一个STATUS_STACK_OVERFLOW。那两个之间有什么区别?我刚刚发现堆栈溢出(堆栈耗尽)与堆栈缓冲区溢出不同,但是它不能解释它,或者我听不懂。您能帮帮我吗? 关于 Tobias 解决方案 考虑以下在内存中向下增长的堆栈: + ------------- --- + |一些数据| |
..