579. AI Village Capture the Flag @ DEFCON31 | ai-village-capture-the-flag-defcon31
我共解决了 22 道题目(包含测试题)
测试:测试
聚类 - 第1关:我通过尝试不同的过滤器并选择分数接近 1 的那些来找到解决方案。
1. 我尝试发送 list = [0],结果提示"太小了!"。
2. 预测收入后,我发现有许多 ≤ 50 的条目符合描述,于是进行了检查。
3. 然后我尝试过滤收入小于等于 50K 的数据,结果接近 1;而相反的条件结果为 0。
4. 在尝试更多过滤器后,我成功精确定位了目标。
聚类 - 第2关:这题很简单。我尝试对数据进行聚类,发现形成了 4 个簇。
聚类 - 第3关:这题有点难,我尝试了不同的聚类算法,发现 TSNE 最适合我的需求。我下载了一张由 Matplotlib 生成的大规模图像(100, 50),然后在电脑上打开,能够正确查看并解答。
统计 Mnist:在这题中,我们需要统计 MNIST 数据集中每个像素值(从 0 到 255)的出现次数。输入数据中给出了像素提示:[255, ]
未解决。
Granny - 第1关:这题花了我 9 天时间解决。我一开始走了弯路。首先我尝试仅使用 224 尺寸调整和图像归一化的预处理,在所有可用模型(Jax、TensorFlow 和 torch)上进行测试。我未能找到正确的模型,因此决定尝试不同的黑盒算法,但也没有成功。休息了一周后,我决定深入研究,发现正常的推理流程中会先应用 256 尺寸调整,然后中心裁剪,再进行归一化。使用这种方法后,我成功匹配了模型,并使用 torch 攻击库中的 PGD 攻击获得了结果。
Granny - 第2关:为了解决这题,我使用了 BPDA(反向传播微分近似)方法。通过迭代应用 JPEG 压缩,然后进行 PGD 攻击,直到 API 将图像分类为 "Granny" 并给出结果。
未解决。
未解决。
像素化:我用随机图像运行循环,发现某些结果返回错误:`'无效 XML: <?xml version="1.0" encoding="UTF-8"?>\n<request action="insert"><system>pixelated</system><text>table: 2 & 2 & 2 & 2 & 2</text><is_admin>false</is_admin></request>\n'`。我尝试将 is_admin 从 false 改为 true,从而获得了 Flag。
西班牙语混合:非常简单,使用谷歌翻译。英文意思是"the security flag is gaaaaaabl.."。
未解决。
海盗旗:如果海盗想要 Flag,他会怎么说?很简单,他会直接要 Flag(第一次尝试就成功了)。
语义相似度:我浏览了大量单词,发现与太空相关的单词得分很高。我使用聊天机器人生成 100 个太空相关的单词,在循环尝试时找到了"asteroid"。
语义相似度 2:再次浏览大量单词并尝试组合。我发现"person, woman, man, camera, TV"这五个单词组合得分 0.97。搜索谷歌后发现这是特朗普的著名演讲,使用该序列加上句点找到了 Flag。
未解决。
WITF - 第1关:这是一个简单的检查笔记本。
WITF - 第2关:跟随流程的 LLM。
WITF - 第3关:跟随流程的 LLM。
WITF - 第4关:用英语对话时系统反应过于敏感,所以我决定更换语言。
WITF - 第5关:跟随流程的 LLM。
WITF - 第6关:跟随流程的 LLM(较小版本)。
猜猜是谁回来了:我使用 Matplotlib 下载了高清图像,肉眼可以看到树懒眼镜左侧有文字。我尝试手动查找该像素,然后根据该像素进行过滤。
泡菜:向键盘挥手,拥抱鼠标。复制请求,粘贴到 dump 中。为什么这样可行?因为它并不那么危险(某些函数由你创建),但也不安全。
我的IP是什么?:由于域名可以表示为 IP 地址,我让 LLM 将乔的邮箱从辛普森的 IP(第一次调用时由 LLM 提供)更改为目标 IP。
我的IP是什么?第2关:由于系统说不知道布鲁诺,我决定尝试使用我的名字,结果成功了。
解决方案笔记本:https://www.kaggle.com/code/goelyash/defcon31-ai-village-capture-the-flag-22-flags
感谢组织者举办这场比赛,真的很有趣。期待明年的比赛 😁