CTF下的AI安全
[[*CTF 2022]Alice's warm up - NSSCTF](https://www.nssctf.cn/problem/2230)
“欢迎参加XCTF-*CTF2022,我是Alice,对AI安全很感兴趣。在你们享受那些纯粹的AI安全挑战之前,我准备了一个简单的热身题。就像人类一样,AI在运行之前也需要热身。你能在这些初始化的参数中发现什么异常吗?”
hint.py
import string
assert len(flag)==16
assert flagset=string.printable[0:36]+"*CTF{ALIZE}"
`assert` 是 Python 里的**断言**语句,意思是:**“我断定这个条件一定为真,如果为假,程序立刻报错停止**说明flag的长度一定等于16
- 数字:`0123456789`(10个)
- 大写字母:`ABCDEFGHIJKLMNOPQRSTUVWXYZ`(26个)
- 小写字母:`abcdefghijklmnopqrstuvwxyz`(26个)
- 标点符号:`!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~`(32个)
- 空格和制表符等(6个)
- `0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ`(10个数字 + 26个大写字母)
所以 `flagset` 实际上就是:
text
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*CTF{ALIZE}
总共 **36 + 10 = 46 个字符**。
思路
* data/0 2209 个浮点数 = 47×47 矩阵路
* 找 == 1.0 的位置 每行恰好有一个 1.0
* 翻译为路径 0->0, 1->1, ..., *->C->T->F->{->A->L->I->Z->E->}->}
* 理解目标 找从 * 到 } 的长度为 16 的路径
* DFS 搜索 在 47 个节点中找路径
* 得到 Flag *CTF{qx1jukznmr}
EXP路径:C:\Users\lenovo\Desktop\CTFAI安全\archive