这个虽然可以溢出1字节, 但是new pig的溢出更好用
1. 初始化分配的内存(0xE20, chunk_size=0xE30)
减小top_chunk.size的时候, 需要保证top_chunk_address+top_chunk.size是按页对齐的
所以会用到这个chunk_size计算
2. 功能
>> new pig(最多可以创建3个)
大小(0xC8, chunk_size=0xD0):
struct pig {
char name[0x10];
char data[0xB8];
}
strncpy往name写数据, 只有pig2可以复制8个字节, 可以用来leak libc地址
往data写的时候多写了0x10字节, 可以修改到next_chunk.size及next_chunk.fd
>> read_bytes(buf, len)
必定以00结尾, 如果最后1字节是换行符, 替换为00, 否则在后面添加00 这个虽然可以溢出1字节, 但是new pig的溢出更好用
>> free pig(功能正常)
>> print pigs(%s: name, %s: data)
有3个pig, 只有new过的才能print
只能print一次, 看来leak了libc地址就不能leak堆地址了
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-7-26 16:21
被风间仁编辑
,原因: