awd 赛前准备

2025-11-24

1. 环境准备

1.1 虚拟机

pwn 24.04环境搭建保姆级教程
总的来说,要装以下东西:

1. ubuntu 24.04 虚拟机
2. vim(编辑器)
3. gcc(编译器)
4. git
5. python3-pip
6. pwntools
7. pwndbg
8. one_gadget
9. glibc-all-in-one
10. patchelf
11. cmake
12. wabt、wasmtime
13. curl
14. qemu
15. seccomp-tools
16. seccomp
17. net-tools
18. docker
19. docker-compose
20. VS code及其插件

2. awd核心步骤

这回不知道为什么,awd开启了无限制击打游戏;即出题方默许了删站、种马等一劳永逸的恶心人做法,没办法,只能开启斗法时代了。

2.1 ssh登录改密码

登录后光速改密码,以防密码是弱密码直接被爆了。

ssh user@192.168.1.100 -p 2222
#登录后执行:
passwd

2.2 文件备份

本质是先把题目都拷贝一份下来,防止有人恶意搅屎把你的题目全删喽或者搞崩喽。

scp local.txt user@remote:/path/to/dir/ #拷贝本地文件到远程
scp user@remote:/path/to/file.txt /local/dir/ #拷贝远程文件到本地
scp -r user@remote:/path/to/remotedir/ ./localdir/ #拷贝远程目录到本地

2.3 通防

暂时没用上,核心思路是添加一个禁止sys_execve执行的系统调用:

45 31 D2                      xor     r10d, r10d
45 31 C0                      xor     r8d, r8d
6A 26                         push    26h ; '&'
5F                            pop     rdi
31 D2                         xor     edx, edx
6A 01                         push    1
5E                            pop     rsi
31 C0                         xor     eax, eax
B0 9D                         mov     al, 9Dh
0F 05                         syscall                                 ; LINUX - sys_prctl
6A 06                         push    6
48 B8 06 00 00 00 00 00 FF 7F mov     rax, 7FFF000000000006h
50                            push    rax
48 B8 15 00 01 00 3B 00 00 00 mov     rax, 3B00010015h
50                            push    rax
6A 20                         push    20h ; ' '
54                            push    rsp
6A 04                         push    4
49 89 CA                      mov     r10, rcx
6A 16                         push    16h
5F                            pop     rdi
48 89 E2                      mov     rdx, rsp
6A 02                         push    2
5E                            pop     rsi
31 C0                         xor     eax, eax
B0 9D                         mov     al, 9Dh
0F 05                         syscall                                 ; LINUX - sys_prctl
48 83 C4 30                   add     rsp, 30h

2.4 流量检测

场景:可通过ssh访问靶机(以ctf用户权限登录进行维护换题),可通过nc访问靶机999端口(开放题目)。
限制在靶机中,题目通过docker(docker内部使用xinted)端口映射到靶机999端口。靶机中的ctf用户被隔离,无法观测docker内环境。
todo: 如何进行流量抓取。
思路一:替换题目,选手攻击时将流量转发到靶机,靶机起程序流量转发到选手本地。
思路二:替换题目,选手攻击时将流量保存到内存,题目植入后门,我们登录后把内存取出。

2.5 后门查杀

暂时没用上

2.6 挖洞

以二进制而言,主要还是看你逆向分析的速度。

2.7 修洞

https://wsxk.github.io/awdpatch/
遇到checker比较严格的场景:最多允许修改100字节,且只允许修改代码段区间,这种场景下比较考验选手的汇编功底,一般情况需要查看汇编的上下文,寻找可以移除的汇编指令。

2.8 exp编写

跟平时做pwn题没什么区别。一定要说的话,就是不知道对手到底补了什么东西有点烦。
todo:常见exp模板准备。