第七届浙江省大学生网络与信息安全竞赛 初赛 - shellcode
文件属性
| 属性 | 值 |
|---|---|
| Arch | amd64 |
| RELRO | Full |
| Canary | on |
| NX | on |
| PIE | on |
| strip | no |
解题思路
程序允许输入10字节的shellcode,并且过滤了syscall(0f 05)。由于有限制,shellcode不能直接写read,
字节数会超。由于call会在栈上留下一个返回地址,相当于间接拿到了pieBase。

回看main函数,其中在read(0, buf, 10)时,程序依次设置了rdx, rsi和rdi,
因此我们可以设置好rdx,然后跳回去让程序自己设置rsi和rdi,实现大量字符串写入。
由于memmem比较时只比较前10个字符,而execve的shellcode的syscall在10字节之外,
因此都不需要patch就能拿shell。
shellcode开头还有一个push pop,是因为本地测试时好像偶尔会吞2个字节。
EXPLOIT
1 | from pwn import * |

- 标题: 第七届浙江省大学生网络与信息安全竞赛 初赛 - shellcode
- 作者: RocketDev
- 创建于 : 2025-02-20 22:40:00
- 更新于 : 2026-03-27 15:59:00
- 链接: https://rocketma.dev/2025/02/20/shellcode/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论