首页
社区
课程
招聘
未解决 [求助]《0day安全:软件漏洞分析技术》第二章 突破密码验证程序实验问题
发表于: 2021-2-6 22:59 5706

未解决 [求助]《0day安全:软件漏洞分析技术》第二章 突破密码验证程序实验问题

2021-2-6 22:59
5706

注释:

问题自己经过翻书已经解决。



您好;

    我在按照书本《0day安全:软件漏洞分析技术》第二章实验“突破密码验证程序实验”发现如书本中在函数strcpy()执行后栈的状态与书本的描述不一样,在我的调试中发现存储在栈空间的内容不是“输入的值”而是“输入值的地址”详细如下图:

(注释:我使用的调试程序有课本提供下载链接获取的程序以及自己使用vs 6.0++ 调试的。结果是一样的)

    我想问的问题是:

1;这样放入栈当中的是指针,我们通常有什么方法产生栈溢出呢?

2;是我哪里调试的有问题嘛?怎么会和书本描述的不一样呢?


    我使用的测试环境如下:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-2-8 07:03 被天象独行编辑 ,原因: 自己看明白了,已经解决。
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 226
活跃值: (2362)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
请问咋解决的
2022-2-6 16:13
0
雪    币: 733
活跃值: (1395)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
3

因为strcpy接收的是一个指针参数,strcpy的调用约定为__cdecl,函数栈需要由调用者来释放,所以栈上的指针是strcpy的参数。

因为属于函数的栈的大小是固定的,所以栈溢出就是通过大量的数据来淹没目标数据来达到篡改程序执行流程的目的(比如栈上的函数返回地址),像本程序只要继续增加用户输入就行了

最后于 2022-2-11 17:25 被狐臭编辑 ,原因:
2022-2-11 17:21
0
游客
登录 | 注册 方可回帖
返回
//