菜鸟一个,这几天对缓冲区溢出突然来了兴趣,学习过程中有个问题搞不太懂:win64位系统中,在sprintf函数产生的缓冲区溢出中,64位的地址包含大量的\0x0字符,如:0x000000000029f8c0,这样的地址怎样通过buffer溢出覆盖函数返回地址呢?百思不得姐啊。。。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
0x2l 既然已经找到了漏洞点,接着可以在调试器中计算出目标地址和buffer之间的偏移地址,这个目标地址可以是返回地址,也可以是相邻变量或者是其他内容,最终的目的都是间接或者直接的控制程序的执行流。
楼主应该指的是sprintf的时候遇到\x00截断的问题吧,打个比方假如你的返回地址是0x000000000badf00d,你不需要覆盖0x00000..部分,你只需要覆盖到badf00d的位置就可以了啊,比较明显的话调试一下就知道了
覆盖前
覆盖后
Keoyo 楼主应该指的是sprintf的时候遇到\x00截断的问题吧,打个比方假如你的返回地址是0x000000000badf00d,你不需要覆盖0x00000..部分,你只需要覆盖到badf00d的位置就可以 ...