Tag: 安全性

堆溢出的危险?

我有一个关于堆溢出的问题。 我知道如果一个堆栈变量超出它的缓冲区,它可能会覆盖EIP和ESP值,例如,让程序跳转到编码器不希望它跳转的地方。 据我所知,这看起来像是因为向后的小端存储(其中数组中的字符“向后”存储,从最后到第一个)。 另一方面,如果你把那个数组放入堆中,它会与堆栈一起增长,并且你会溢出它,它会将随机垃圾写入空的内存空间吗? (除非你在solaris上的哪个地方,据我所知有一个大端系统,旁注) 这基本上是危险吗,因为它会写入“空白空间”? 所以没有目标跳转到代码不是为其设计的地址和区域? 我错了吗? 要指定我的问题: 我正在编写一个程序,其中用户通过命令行执行它时传递​​一个字符串参数和一个标志,我想知道用户是否可以使用此字符串参数执行hack,当它放在堆上时mallocfunction。 天哪,我希望这个问题不是新手:/请尽量解释简单 感谢您的回答,请在几个小时内见到您,晚安。

缓冲区溢出攻击格式

通常我们都会看到基本的缓冲区溢出格式,它有: – NOPs + shellcode + return_address 为什么我们不使用, NOPs + return_address + shellcode? 我们将返回地址指向shellcode的开头? 我猜这是因为如果漏洞位于main()中,我们可能会尝试在堆栈段外写入数据。 我对吗? 如果我,那是唯一的原因吗? 哦,是的,我不是指使用return-to-libc,ptrace等的其他类型的攻击; 我只是想知道为什么最基本的缓冲区溢出攻击以第一种方式展示而不是第二种方式。

基于C签名整数的攻击

我正在阅读这个问题 ,其中一条评论提到了基于C签名整数的攻击 。 我知道什么是int溢出,但我不明白如何使用它来攻击程序。 攻击程序究竟是什么意思? 如果您知道该程序有此错误,您如何使用它? 这仅限于signed int 。 如果是,那为什么呢? 在C ++中是什么情况? 如果这个问题很简单,我道歉