首页
社区
课程
招聘
[已解决] [求助]一道pwn题,一个libc映射到内存,但是偏移地址改变 50.00雪花
发表于: 2019-4-3 18:50 2608

[已解决] [求助]一道pwn题,一个libc映射到内存,但是偏移地址改变 50.00雪花

2019-4-3 18:50
2608
libc中setbuf的地址: 0x77F50
libc中system的地址: 0x456A0
那么偏移地址应该是0x77F50-0x456A0=0x328B0
但是实际内存中system在一次执行中的具体地址是:0x7FA43EEAB5D0
实际内存中setbuf在一次执行中的具体地址 是:0x7FA43EEDF620
那么真实的偏移地址 0x34050
依次类推,我算了好多都是有偏差的,计算与libc中的不同,但是在内存中每次执行的偏差是相同的

我的问题就是
1.为什么会出现这种情况( 这个题目的exp是网上给的,但是把io改成本地,是执行不了的 ,我觉得计算这个问题,希望有大佬能帮我解释一下这个问题,还有,最好能帮我利用libc0x45526这个地址中的gadget。 )
2.到底怎么看出libc的偏移可不可以用(我做了好几题,都是这样,硬是要我从ida中用正在执行程序来计算地址自己算偏移,而不能用libc中的偏移)
3.为什么exp中要io.sendline(str(setbuf_got)),传一个字符串,%ld不是长整型嘛?

以上是汇编的onshot程序




[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1931
活跃值: (442)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好吧,这道题看exp就知道了,他是leak got表里地址,而你所说的问题,我一个个解答吧,
第一个:为什么你实际调试的偏移跟exp上的偏移不一样?因为你利用的libc.so是不一样的,他是用服务器的libc.so计算出来的,你用的是本地的libc.so计算出来的,内存偏差确实是相同的,一台机子上执行几次都是的,
第二个:改成本地执行不了?因为你偏移都没有改,要改成本地的libc的那些偏移,以及one_gadget得到的rce地址都要改为本地的
第三个:至于那里为什么要str,这是因为输入的问题,sendline默认是用str类型的,必须转换
我写了个本地的exp,仅供参考

最后于 2019-4-3 21:51 被TopGreen编辑 ,原因:
上传的附件:
2019-4-3 21:42
0
游客
登录 | 注册 方可回帖
返回
//