首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此整数溢出漏洞可利用吗?

此整数溢出漏洞可利用吗?
EN

Security用户
提问于 2016-07-17 21:41:13
回答 3查看 9.4K关注 0票数 5

这个整数溢出是可利用的吗?如果答案是肯定的,我如何利用它?

代码语言:javascript
复制
char buffer[20];
int len = atoi(argv[1]);
if(len < 20)
  memcpy(buffer,argv[2],len);

如果我将len设置为-1,则应用程序会崩溃,因为要复制的字节数太长,并且存在分段错误。但是,是否有一种方法或方法来利用该漏洞?

EN

回答 3

Security用户

发布于 2016-07-17 21:48:19

您不需要使用-1,任何大于20的值都将允许您溢出缓冲区。

它将取决于下一个指令和编译器设置的缓解,但从现在开始,您可能可以重写返回地址并执行作为第二个参数提供的shell代码。

票数 3
EN

Security用户

发布于 2016-08-17 13:58:37

似乎没有人考虑到argv 1不是一个数字的可能性。如果您只是输入"this“作为第一个参数,则atoi返回0,并且您还可以溢出缓冲区,因为0< 20。在许多方面,atoi不是一个好的选择。最好使用strtol,它允许您检测输入错误。

票数 0
EN

Security用户

发布于 2023-03-01 12:11:43

首先你有个窃听器。如果argv1 < 0,则将运行memcpy,并将该值作为一个巨大的size_t值传递给memcpy。

现在,您将检查如何处理该bug。您可以使用它从20亿到40亿字节之间的memcpy,这可能会使您的应用程序崩溃,而不会有任何损坏的机会。但是,您必须检查应用程序到底要做什么。

但崩盘可能会发生得更早。当字符串argv2耗尽数据时,可能会发生这种情况。如果该字符串的长度为28字节,则memcpy在复制28个字节后可能会崩溃。它可能覆盖main()、S返回地址和main()返回到攻击者选择的地址。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/130326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档