对“ciscn_2019_n_3“的理解

""具体分析就不说了,其余师傅讲得好,说下关键理解:

对于add()函数:
固定创建一个0xc大小的chunk,而后根据要输入的内容是否决定再创建chunk:
如果是输入数值则不创,如果输入字符串,则保存字符串的指针在首个chunk中,而后将字符串输入往第二个chunk中。
在这里插入图片描述
关键在于这里,分析IDA后发现存在system函数,那么不必泄露libc地址,直接利用elf.plt[“system”]
这个records[v0]+4就是free函数的地址,如果改为system_plt,再往其后的records[v0]指向的地方输入“/bin/sh\x00”那么就解决了。dele功能被执行时,执行的就是system(“/bin/sh\x00”)了
本题利用的是fastbin attack的这个性能:释放某个大小chunk时,申请同样大小的chunk。在申请的时候向相应chunk输入以上提到的值。

图片来自这里
在这里插入图片描述
在这里插入图片描述

像这种在程序执行中利用到的函数地址:被放在了chunk里头或者某个地址的–容易被修改从而执行别的函数。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值