|
|
发表于
2025-12-21 11:02:17
来自手机
|
显示全部楼层
| 阅读模式
来自 福建
本帖最后由 岩浆怕 于 2025-12-21 12:40 编辑
今天来整10年前的CTF挑战
AliCrackme_1
开始挑战
题目要求
没有要求
安装看看
可以看到是一个密码输入界面
随便输入几个
得到提示之后去arsc过滤
复制第一个ID
整数搜索
看一下验证逻辑
通过这个方法可以知道,密码应该是从图片里得到的,我们继续看一下
看了这几段代码可以知道
验证流程是- 用户输入密码 → UTF-8编码 → bytesToAliSmsCode加密 → 与隐藏密码比较 → 验证结果
复制代码
在asstes/logo.png文件中隐藏着加密表和密码
- 加密表
- 偏移: 0x15d81 (十进制89473)
- 大小: 0x300 (768字节)
- 密码
- 偏移: 0x16481 (十进制91265)
- 大小: 0x12 (18字节)
复制代码
分析方法可知代码逻辑如下
- private static String bytesToAliSmsCode(String table, byte[] data) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < data.length; i++) {
- int index = data[i] & 0xff; // 字节转无符号整数(0-255)
- char c = table.charAt(index); // 从表中取对应字符
- sb.append(c);
- }
- return sb.toString();
- }
- 每个字节值作为索引,在table中查找对应的中文字符
- private static byte[] aliCodeToBytes(String codeTable, String strCmd) {
- byte[] cmdBuffer = new byte[strCmd.length()];
- for (int i = 0; i < strCmd.length(); i++) {
- char c = strCmd.charAt(i);
- int v = codeTable.indexOf(c); // 在表中查找字符位置
- cmdBuffer[i] = (byte) v; // 位置值转为字节
- }
- return cmdBuffer;
- }
- 每个中文字符在table中的位置,就是原始字节值
复制代码
接下来我们看一下图片
用文本打开
典型的隐写
前面的一段是加密表,后面的一段是密码
接下来我们就可以推导出解密过程
我们已知
加密表:768字节,256个字符
加密密码: "义弓么丸广之" (6个字符)
加密算法:字节值 → table索引 → 中文字符
过程
- 加密密码: "义弓么丸广之"
- ↓
- 在table中查找每个字符的位置:
- '义' → 位置X₁
- '弓' → 位置X₂
- '么' → 位置X₃
- '丸' → 位置X₄
- '广' → 位置X₅
- '之' → 位置X₆
- ↓
- 位置值就是原始字节值:
- [X₁, X₂, X₃, X₄, X₅, X₆]
- ↓
- UTF-8解码得到明文
复制代码
这样的话,就很明显了,我们直接写一个Python代码一行解决
Python代码
- python3 -c "
- encrypted = '义弓么丸广之'
- with open('logo.png', 'rb') as f:
- f.seek(0x15d81)
- table = f.read(768).decode('utf-8')
-
- # 解密
- result = bytes([table.index(c) for c in encrypted]).decode('utf-8')
- print('解密结果:', repr(result))
- print('十六进制:', result.encode('utf-8').hex())
- # 字符信息
- print('\n字符映射详情:')
- for c in encrypted:
- idx = table.index(c)
- ascii_char = chr(idx) if 32 <= idx < 127 else '.'
- print(f"'{c}' -> 位置:{idx:3d} (0x{idx:02x}) -> ASCII: '{ascii_char}'")
- "
复制代码
进入图片所在的目录运行代码
运行结果
可以看到密码出来了
密码被我隐藏了,在结尾,自己动手,丰衣足食
试一下
成功了
题目下载
https://wwbez.lanzouw.com/i3inq3e5eqib
密码:gfqb
flag密码(建议自己动手分析)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|