首页
社区
课程
招聘
[原创]pwnable.kr uaf
发表于: 2018-11-30 17:36 8857

[原创]pwnable.kr uaf

2018-11-30 17:36
8857

Pwnable.kr之uaf

UAF漏洞的利用:

(1)  先制造一个迷途指针

(2)  利用我们构造的数据去填充被释放的内存

Human中有两个虚函数,然后human就会有一个虚表,虚表会记录类中所有虚函数的函数指针,可以看到human里面有一个system(“/bin/sh”);这就是我们利用的最终目的,但现在我们还没办法利用,我们接着往下看

接着我们看到man类,他会继承父类的vtable(虚表),同时子类的introduce()的函数的地址会替换父类在introduce()在虚表中的位置.

在分析之前,我们需要有一定的基础知识如下图

把编译好的可执行文件拖入IDA中分析, F5后我们看伪代码,看到v11,我们输入1时执行的是下面的语句,因此可以猜到v11就是vptr,然后转换为指针,取其中的内容就是vtable的第一个值,再加8就是第二个值,真好是introduce的函数指针

一共申请了30h大小的内存,所以我们的长度参数应该传48,  V11的值就是rbp-60h处的值



因此我们在此处下断点   

b *main+101




V11的值也就是rbx的值为0x555555768e70;

查看0x555555768e70,虚表的地址为0x555555755c88;


看到这里引用的是虚表处偏移8处的函数指针

本来虚表处偏移8是 introduce()的指针,我们把虚表前移8个字节,虚表偏移8处就是 give_shell()的函数指针了



因此我们构造如下数据写入内存


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//