如何解决练习堆栈溢出
| 我正在尝试学习堆栈溢出,但是我在练习中遇到了问题。在易受攻击的程序中,必须接收我的shellcode的部分代码为: int array[8];
index = (int) strtol(argv[1],NULL,10);
value = (int) strtoul(argv[2],16);
array[index] = value;
我很容易找到用于覆盖RET的数组索引。然后,我尝试在易受攻击的程序中找到返回地址的偏移量,如下所示:
./victim 12 $(printf \"%0512x\" 0)
我尝试了很多不同的长度,但是在每种可能的长度下,我都会遇到分段错误。这很奇怪,因为我的书说只有在保存的返回地址所在的位置,我才应该能够得到分段错误。
我是一个初学者,所以可能我在犯一些基本错误。谁能帮我解决这个问题?
在此先感谢您的帮助。
解决方法
遇到分段错误的原因是,您只为程序提供了一个参数,但是却在
argv[2]
(即NULL
指针)上调用了strtoul
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。