首页
论坛
课程
招聘
[求助]64位缓冲区溢出的返回地址的问题
2020-7-2 23:09 4549

[求助]64位缓冲区溢出的返回地址的问题

2020-7-2 23:09
4549

菜鸟一个,这几天对缓冲区溢出突然来了兴趣,学习过程中有个问题搞不太懂:win64位系统中,在sprintf函数产生的缓冲区溢出中,64位的地址包含大量的\0x0字符,如:0x000000000029f8c0,这样的地址怎样通过buffer溢出覆盖函数返回地址呢?
百思不得姐啊。。。


2022 KCTF春季赛【最佳人气奖】火热评选中!快来投票吧~

最后于 2020-7-2 23:10 被wilesilly编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 284
活跃值: 活跃值 (4442)
能力值: (RANK:310 )
在线值:
发帖
回帖
粉丝
0x2l 活跃值 4 2020-8-3 11:05
2
0
既然已经找到了漏洞点,接着可以在调试器中计算出目标地址和buffer之间的偏移地址,这个目标地址可以是返回地址,也可以是相邻变量或者是其他内容,最终的目的都是间接或者直接的控制程序的执行流。
雪    币: 285
活跃值: 活跃值 (320)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
Keoyo 活跃值 2 2020-8-3 11:46
3
0
0x2l 既然已经找到了漏洞点,接着可以在调试器中计算出目标地址和buffer之间的偏移地址,这个目标地址可以是返回地址,也可以是相邻变量或者是其他内容,最终的目的都是间接或者直接的控制程序的执行流。

楼主应该指的是sprintf的时候遇到\x00截断的问题吧,打个比方假如你的返回地址是0x000000000badf00d,你不需要覆盖0x00000..部分,你只需要覆盖到badf00d的位置就可以了啊,比较明显的话调试一下就知道了

覆盖前

                 

覆盖后


雪    币: 284
活跃值: 活跃值 (4442)
能力值: (RANK:310 )
在线值:
发帖
回帖
粉丝
0x2l 活跃值 4 2020-8-3 12:44
5
0
Keoyo 楼主应该指的是sprintf的时候遇到\x00截断的问题吧,打个比方假如你的返回地址是0x000000000badf00d,你不需要覆盖0x00000..部分,你只需要覆盖到badf00d的位置就可以 ...
正解,我没看到\0字符
游客
登录 | 注册 方可回帖
返回