磐石行动高校赛2024 初赛 - scflaot
你是否晓得你的幸运数字呢
float, 肯定是没打对
文件属性
属性 | 值 |
---|---|
Arch | x64 |
RELRO | Full |
Canary | on |
NX | on |
PIE | on |
strip | yes |
libc | 2.23-0ubuntu3 |
seccomp rules
解题思路
没禁writev
和openat
,可以打这俩
程序每次读入一个int,然后将其除以2024后放入shellcode区。
共读取0x1000次,并跳转到0x603ff8
执行,这意味着我们还需要跳回前面
一开始考虑将shellcode乘以2024再输入,结果发现这样做数据完全不准,直接暴力打表
1 | // gcc -O2 tab.c && a.out |
这样一来,当输入数字为idx
时,通过访问文件中的idx * 4:idx * 4 + 4
可以获知最后放入
shellcode 区的真正数字。然后再准备shellcode,转换为16进制后放到imhex里面爆搜,
就可以根据地址反推输入的数字
书签上对应的指令与以下脚本中的地址一一对应
图中指令:使rdx变为0x600000,然后跳转过去,再执行一次read,读入任意shellcode
EXPLOIT
1 | from pwn import * |
- 标题: 磐石行动高校赛2024 初赛 - scflaot
- 作者: RocketDev
- 创建于 : 2024-07-25 11:42:00
- 更新于 : 2024-07-25 11:42:00
- 链接: https://rocketmadev.github.io/2024/07/25/scflaot/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论