acgdir.com
首页 > 动漫/二次元 > 动漫/二次元/资讯

萌新带你开车上p站(番外篇)(4)

2022-11-11 来源:acgdir.com
对应执行的流程是这样子的
BK=*(B 4)=@@@@ //B->bk前还有B->fd,占4字节
FD=*(B)=!!!!
*(FD 4)=*(!!!! 4)=BK=@@@@
*(BK)=*(@@@@)=FD=!!!!
通过红色字体的关系,我们知道,修改了B的fd,bk之后,就可以在进行覆盖操作
这里我们设修改了B->bk=[ebp-4],B->fd=&shellcode 4
则进过unlink(B)之后会有
*(&shellcode 4 4)=[ebp-4] //这个结果无影响* (ebp-4)=&shellcode 4 //实现了* (ebp-4)=&shellcode 4,因为*(ebp-4)覆给ecx,则ecx就被覆盖成了&shellcode 4,然后就可以拿到shell了
接下来具体看看怎么布局
我们知道
shellcode地址 4=heap 0x8 0x4=heap 12,来修改B->fd
ebp-4=stack 0x14-0x4=stack 16,来修改B->bk
A的buf大小是8字节,写了shellcode地址花了4字节,因为最小单位为16字节,所以还剩16-4=12字节需要填充,我们填充12个A
综上,得到了如下的布局

萌新带你开车上p站(番外篇)


shellcode的地址是什么呢

萌新带你开车上p站(番外篇)


而heap和stack的地址每次运行时都会打印出来的
猜你喜欢