
1. EmojiCTF2024 Web赛题解析与实战复盘去年参加EmojiCTF的经历让我记忆犹新——那是一个用表情符号作为主要交互方式的特殊CTF赛事。作为Web方向的参赛者我遇到了不少令人拍案叫绝的题目设计。今天就来拆解其中最具代表性的几道Web题目分享解题思路的同时也会还原当时踩过的坑。2. 赛事环境与基础准备2.1 比赛环境配置要点EmojiCTF的Web题目通常运行在定制化的Docker容器中每个实例会分配独立端口。我习惯使用以下工具链Chrome浏览器 HackTools插件内置编码转换功能Burp Suite Community版抓包改包必备Python3环境用于快速编写爆破脚本自制的Emoji解码工具后文会分享源码重要提示比赛网络通常限制境外IP访问建议提前测试代理延迟。我在第一小时就因网络问题浪费了大量时间。2.2 Emoji编码特征识别题目中常见的编码形式包括直接Unicode呈现如→U1F6A9URL编码%F0%9F%8E%89Base64编码后的Emoji8JNqQ自定义替换密码⭐AB等3. 典型题目深度剖析3.1 表情盲注题Web100题目描述一个仅用emoji作为查询参数的搜索框解题过程输入返回找到1条结果输入返回找到0条结果通过Burp拦截发现参数为?search%F0%9F%90%B1确认存在布尔型注入特征 AND 11-- → 正常返回 AND 12-- → 无结果最终payloadimport urllib.parse emoji_payload UNION SELECT flag FROM flags-- encoded urllib.parse.quote(emoji_payload) print(f最终URLhttp://ctf.example.com/?search{encoded})3.2 Cookie伪造题Web200题目首页只有和两个按钮点击后显示不同表情关键突破点发现Cookie中有user__的base64形式解码后尝试修改表情顺序__ → 返回403__ → 显示管理员菜单在第三个位置插入获取flag调试技巧// 控制台快速生成Cookie function genCookie(emojis) { return btoa(emojis.join(_)).replace(/$/, ); } console.log(genCookie([,,]));4. Emoji处理工具开发4.1 Python解码工具import emoji from urllib.parse import unquote def decode_emoji(input_str): if % in input_str: return unquote(input_str) try: return emoji.demojize(input_str) except: return input_str.encode(unicode-escape).decode()4.2 常见问题排查表现象可能原因解决方案Emoji显示为方框终端编码问题改用iTerm2或Windows Terminal提交后参数丢失中间件过滤尝试HTML实体编码响应乱码字符集不匹配添加HeaderContent-Type: text/html; charsetutf-85. 高级技巧与防御方案5.1 Emoji混淆技术去年有一道题将flag藏在零宽度空格修饰的Emoji中const hiddenFlag ️.replace(/[\u200B-\u200D\uFEFF]/g, );5.2 防御建议对于开发者使用emoji-regex库严格校验输入在WAF规则中添加Emoji的Unicode范围检测避免直接拼接Emoji到SQL语句6. 实战演练复现2024赛题6.1 题目还原步骤准备Docker环境FROM python:3.9 RUN pip install flask emoji COPY app.py /app/ CMD [python, /app/app.py]核心漏洞代码app.route(/search) def search(): query request.args.get(q, ) if in query: return 检测到敏感表情 return f搜索结果{query}6.2 绕过检测的方法使用组合字符绕过 → ⚐Unicode组合URL编码%F0%9F%8F%B4%EF%B8%8F%E2%9A%907. 赛后总结与提升建议通过这次比赛我整理出Emoji相关的Web安全知识体系编码转换Unicode/URL/Base64互转注入检测布尔型/时间型盲注特征模糊测试使用fuzzdb的emoji字典流量分析Wireshark识别异常编码建议想要备赛的同学熟记Unicode中Emoji的编码范围U1F300到U1F5FF等收集各类CTF中的Emoji题目建立本地题库开发自己的编码转换工具链那次比赛最后一道Web400的题目我花了3小时才意识到需要把蜗牛表情延迟作为时间盲注的判断依据。这种非传统的出题思路正是EmojiCTF的魅力所在也提醒我们Web安全研究需要跳出固定思维模式。