免责声明:本文为个人技术学习与工程实践笔记,所涉操作仅应在获得授权的环境中进行。因不当使用造成的后果由使用者自行承担。
有线下机会,但未能成行
Misc
complicated_http
对流量进行审计

发现 openssl 加解密脚本,将其提取出来,用脚本还原 HTTP 响应中的值即可
1 | <?php |

Flag

flag{1ec5be5a-afbd-4867-800b-3eb739b9e3bd}
goog_http
下载压缩包后修改后缀解压,得到两张图片,推测为盲水印题;使用 bmw 并将 alpha 设为 10.0,还原出 flag.zip 的密码

1 | python3 bwmforpy3.py decode one.png theother.png password.png --alpha 10.0 |

得到密码为 XD8C2VOKEU 直接解压压缩包获取到 flag

flag{d580cc00-e489-467e-882b-1c340560533a}
优雅内存
Reverse
flag 在哪?


两步异或
flag{UUU123QWE}
ezEXE
rc4

encrytor
Rust 编写的加密程序,通过动态调试即可得到


flag{3df837d045ea07d9230cd23047a}
Web
CookieBack
访问页面,提示需要携带 cookie,按照提示设置 cookie 值即可

Ezpython
Py jail 逃逸,枚举可用的对象与方法即可完成

最终发现 flag 就位于当前目录下。
1 | print(().__class__.__bases__[0].__subclasses__()[118].__dict__['get_data'](112, 'flag')) |
easy_node
直接访问

访问 /vm2_tester 构造参数返回


Crypto
Biard

打开文档,在每张小鸟的备注中可以看到 char( 字样,逐个解码即可
flag{birdislovely}
dirty_flag
编码两次,直接进行两轮暴力破解
1 | alpha = string.digits + string.ascii_lowercase |
Crackme
题目保留了原始 flag,可直接获得

Twice
简单 rsa,给了公私钥
双重 rsa 解密
flag{1a100d2c0dab19c4430e7d73762b3423}
RSA_like
大模数维纳攻击,变异 rsa 解密
flag{4872c7e4cc11508f8325f6fb68512a23}
Pwn
Keybox
利用整型溢出使取值判断失效,将 retaddr 改写为后门函数入口。本地环境因 libc 版本不同出现栈对齐问题,可通过调整 retaddr 起始位置跳过 pop rbp 指令;远程环境并未出现该问题。
1 | from pwn import* |
Changeaddr
flag 被读入 bss 段,直接利用任意读泄漏即可
1 | from pwn import* |
防御启示
- 传输层之外不应再暴露可逆加密与密钥:流量中直接出现 AES 密钥与加解密脚本,说明敏感数据由客户端自行加密且密钥随流量暴露。业务应使用 TLS 承载机密性,密钥由服务端下发或协商,禁止硬编码在脚本与客户端中。
- 图片等媒体文件需要重编码与隐写检测:盲水印工具能在视觉无损的前提下写入信息,图片文件尾(IEND 之后)附加数据同样是常见载荷位置。上传审核应重编码文件、剥离附加数据,并对 LSB 平面做统计检测。
- 语言级沙箱不是安全边界:本题反复出现 Python 沙箱逃逸与 vm2 沙箱逃逸,根因是把不可信代码放在同一进程内解释执行。不可信代码应放入独立进程或容器,配合 seccomp、只读挂载、网络与权限裁剪,避免只依赖对象属性黑名单。
- 二进制程序要同时做代码层与编译层加固:整型溢出使判断失效、任意写原语、栈布局操纵等问题,需要代码层的整数与边界校验,以及编译期的栈保护、PIE/ASLR、RELRO 等缓解措施;对外接口不应开放任意地址读写能力。
- RSA 参数须符合安全要求:题目中出现小私钥指数导致的维纳攻击与双重 RSA,说明参数选择不当会使密钥可被还原。密钥应使用足够长度与密码学安全随机源生成,避免在不同密钥之间复用素数或公共模数。