星点匠心建站 星点匠心建站XD JIANXIN STUDIO
400-883-9527 免费定制方案
ARTICLE DETAIL

资讯详情

深耕新锐建站与运营推广的一线实战洞察。

CTF中Base64编码原理与实战应用解析

CTF中Base64编码原理与实战应用解析 1. CTF中的Base64编码基础解析Base64编码在CTF比赛中是最基础也是最常见的编码类型之一。作为入门级选手必须掌握的技能Base64看似简单却暗藏玄机。这种编码方式最早用于电子邮件传输后来被广泛应用于各类数据传输场景。在CTF比赛中出题人常常会利用Base64的特性设置各种有趣的题目。Base64编码的本质是将二进制数据转换成由64个可打印字符组成的ASCII字符串。这64个字符包括大写字母A-Z、小写字母a-z、数字0-9以及两个特殊符号和/。编码后的数据会比原始数据大约增加33%的体积但保证了数据在传输过程中不会被错误解释。实战技巧标准的Base64编码末尾经常会出现一个或两个等号这是填充字符。在CTF解题时如果看到字符串末尾有等号首先就要考虑是否是Base64编码。1.1 Base64编码原理详解Base64编码的工作流程可以分为三个关键步骤字节分割将原始数据按每3个字节(24位)为一组进行分割位重组将24位数据重新划分为4个6位的段字符映射每个6位的值(0-63)对应Base64字符表中的特定字符举个例子我们编码字符串Man原始ASCIIM(77) a(97) n(110)二进制表示01001101 01100001 01101110重组为6位组010011 010110 000101 101110对应Base64字符T W F u当原始数据不是3的倍数时需要进行补零操作并在编码结果末尾添加相应数量的等号作为填充。比如编码A原始数据A(65)补零后01000001 00000000 000000006位分组010000 010000 000000 000000编码结果QQ2. CTF中的Base64变种与识别技巧2.1 常见Base64变种形式在CTF比赛中单纯的Base64编码题目已经很少见出题人通常会设置各种变种来增加难度多层嵌套编码数据被反复Base64编码多次自定义字符表不使用标准字符表而是自定义的64字符集URL安全变种将和/替换为-和_去除填充故意去掉末尾的等号分段编码对数据的不同部分分别进行编码避坑指南遇到看似Base64但解码失败的情况首先检查是否有自定义字符表。可以尝试用CyberChef等工具的Magic功能自动识别编码变种。2.2 实战识别技巧长度特征Base64编码后的字符串长度通常是4的倍数字符集特征仅包含A-Za-z0-9/这些字符结尾特征可能以1或2个等号结尾熵值分析Base64编码数据的熵值通常较高且分布均匀在Linux环境下可以使用以下命令快速识别echo TWFu | grep -E ^([A-Za-z0-9/]{4})*([A-Za-z0-9/]{3}|[A-Za-z0-9/]{2})?$3. Base64在CTF各题型中的应用3.1 Misc隐写题目Base64常被用于各类隐写题目中图片隐写将flag信息Base64编码后嵌入图片元数据LSB隐写先用Base64编码数据再通过LSB隐写嵌入文件拼接将Base64编码的数据附加在正常文件末尾解题示例# 从图片中提取Base64编码的flag exiftool image.jpg | grep -i comment # 或者 strings image.jpg | grep -E ^[A-Za-z0-9/]{0,2}$3.2 Web题目中的应用Web题目中Base64常用于Cookie值查看是否有Base64编码的敏感信息数据传输检查AJAX请求中的Base64参数JWT令牌JWT的各部分都是Base64编码的数据URI如data:image/png;base64,...实战案例// 解码JWT令牌 const token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c; const [header, payload, signature] token.split(.); console.log(atob(header)); // 解码头部 console.log(atob(payload)); // 解码数据3.3 逆向工程中的应用在逆向题目中Base64常用于字符串混淆将关键字符串进行Base64编码配置数据程序配置信息可能被Base64编码存储通信协议分析网络协议时可能遇到Base64编码的数据IDA Pro分析技巧查找字符串表中符合Base64特征的字符串跟踪对a-zA-Z0-9/这些字符的操作注意查找长度为64的字符常量表(可能是自定义Base64表)4. 高级技巧与自动化工具4.1 自动化解码脚本Python实现的多层Base64解码import base64 def deep_decode(data): while True: try: data base64.b64decode(data).decode(utf-8) except: return data encoded Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMk0xVmpKS1NHVkdXbFpXTTJoMlZrWmtNR1JIVmtWUmJIQk9VbFJXVlZscmFFTlRSbHBWVW10a2FGSnRVbGhaVkU1dllVWmFjVkZ0UmxOaVJtOTNWMnhXYTFJeFduSk5WbHBPWWtoQ05GWXhXbGRPVmxsNVpFaGtWMDFHY0ZoWk1HaExWMjFXY2xwR1pGaFNNMmhVV1d0a05GbFhUWGhhUms1WFYwVktiMVpYZUd0VWJGcHlXa1prYUdFeGNHOVdha0YzVTNkd1UySklRbGhXYlhCSFRURlplRk5ZYkZkaVZFWklWbXBHVDJSV1ZuUmhSazVwVTBkb1dWZFhlR0ZqTVdSMFVteG9VMkpIVWxsWmJGWmhZekZrU0ZOclpHcFNWR3hoV1d4b1QxWXhXblZSYlVaVFRWWndNRlpxU2t0V1ZscDBaVWhrV0ZKdGVGaFpNbmh6VlRKS1IxTnNXbWxTTW1oWFZtMHhORmxYVWtoVWEyaHBVbTFTV0ZscmFFSmxSbVJaV2taa2FWSnVRbFJaVkVwdlZqSkdjMVp1VW14U2JWSllWakowYTFsV1NsbGhSbEpPVm01Q1dsWXhaREJXTWtwSlVXcE9WMDF1YUZoV1IzaGhZVEZLYzJOR1pGZGhhMXB5V1d0YVYxWnNaSFZqUlU1WVZtMVNVRlpYZEZkamJHUnlUVlYwVTAxV2NGbFhWM2hoVmpGd1YyRkdUbGRXZWtVd1ZsUkpNVlpHV25OVGJHaG9UVlZ3V0ZadE1VZFhiVlpIV2taV1YySklRa2hXYWtwTFYxWmFjVkp0ZEZOTlYxSllWakJrVTJGR1NuUlNiR1JxVFZad01WVnRlR3BsUm5CMFZHdGtWR0pIZUZWWmJHaFRWMFpzY2xwR1drNVdSVXB2VjFaU1MxUXhXWGhYYmtaVllrWndjbFZxUmt0V1ZscEhXVE5vYVUxWFVucFdNV2h2VjBkS1IxZHNhR3RTYlhoWVZqQmFhMkZHU2xWUmFrNVhZbGhTV0ZSV1pGTk5SbFY0Vld4a1YwMVhVbGRaVjNoVFZqRmtSMWR1VG1sU01taFlXV3RhWVZkR1duRlNiR1JPVFZad1dGbHJaRk5sYkZwMVdrWm9hVkl4U2xCV2JYQkRXVlpPU0dWSGRGZGhhM0JRV1RCYVlWUnNXWGhYYms1VVlUSlNWMVJXV25kV01ERjFZVWhLV2xaWFVrZGFWVnBQWVZaS2MyTkdaR2hOYldoWVZteFNSMWRXV2xobFJ6bFlVbXh3V1Zsc1ZtRlhSbEpXV2tVMVYySklRa2hXYlhoM1YxWmFkR1ZJWkZSWFIxSlpXV3RrUzFZeFduSk5WbHBPWW0xU1dGZFhlRzlXTURGWFYyNU9XR0pIVWpOV1J6RjNWakF4VjFkc1dsZFdia0paV2xWYVlWUXhXblZTYkdScVRWZFNlbGRyV2xkWlYwVjRZa1JTVjAxdVVuWldha1pMWXpGa2MxcEdaR2hsYkZwSlZtcEdhMUl4V2xkVGJsSnJVak5TVjFsVVRrTlhiRnB6VjJ0a1dHSlZXbGRVVmxwM1RWWlplV1JIT1ZkTlZXdzBXVlZrUzFZeFduSk5WbHBPWW10S1dWWXhXbUZqTVdSMFVteG9WMkpIVWxsWmJGWmhZekZrU0ZOclpHcFNWR3hoV1d4b1QxWXhXblZSYlVaVFRWWndNRlpxU2t0V1ZscDBaVWhrV0ZKdGVGaFpNbmh6VlRKS1IxTnNXbWxTTW1oWFZtMHhORmxYVWtoVWEyaHBVbTFTV0ZscmFFSmxSbVJaV2taa2FWSnVRbFJaVkVwdlZqSkdjMVp1VW14U2JWSllWakowYTFsV1NsbGhSbEpPVm01Q1dsWXhaREJXTWtwSlVXcE9WMDF1YUZoV1IzaGhZVEZLYzJOR1pGZGhhMXB5V1d0YVYxWnNaSFZqUlU1WVZtMVNVRlpYZEZkamJHUnlUVlYwVTAxV2NGbFhWM2hoVmpGd1YyRkdUbGRXZWtVd1ZsUkpNVlpHV25OVGJHaG9UVlZ3V0ZadE1VZFhiVlpIV2taV1YySklRa2hXYWtwTFYxWmFjVkp0ZEZOTlYxSllWakJrVTJGR1NuUlNiR1JxVFZad01WVnRlR3BsUm5CMFZHdGtWR0pIZUZWWmJHaFRWMFpzY2xwR1drNVdSVXB2VjFaU1MxUXhXWGhYYmtaVllrWndjbFZxUmt0V1ZscEhXVE5vYVUxWFVucFdNV2h2VjBkS1IxZHNhR3RTYlhoWVZqQmFhMkZHU2xWUmFrNVhZbGhTV0ZSV1pGTk5SbFY0Vld4a1YwMVhVbGRaVjNoVFZqRmtSMWR1VG1sU01taFlXV3RhWVZkR1duRlNiR1JPVFZad1dGbHJaRk5sYkZwMVdrWm9hVkl4U2xCV2JYQkRXVlpPU0dWSGRGZGhhM0JRV1RCYVlWUnNXWGhYYms1VVlUSlNWMVJXV25kV01ERjFZVWhLV2xaWFVrZGFWVnBQWVZaS2MyTkdaR2hOYldoWVZteFNSMWRXV2xobFJ6bFlVbXh3V1Zsc1ZtRlhSbEpXV2tVMVYySklRa2hXYlhoM1YxWmFkR1ZJWkZSWFIxSlpXV3RrUzFZeFduSk5WbHBPWW0xU1dGZFhlRzlXTURGWFYyNU9XR0pIVWpOV1J6RjNWakF4VjFkc1dsZFdia0paV2xWYVlWUXhXblZTYkdScVRWZFNlbGRyV2xkWlYwVjRZa1JTVjAxdVVuWldha1pMWXpGa2MxcEdaR2hsYkZwSlZtcEdhMUl4V2xkVGJsSnJVak5TVjFsVVRrTlhiRnB6VjJ0a1dHSlZXbGRVVmxwM1RWWlplV1JIT1ZkTlZXdzBXVlZrUzFZeFduSk5WbHBPWW10S1dWWXhXbUZqTVdSMFVteG9WMkpIVWxsWmJGWmhZekZrU0ZOclpHcFNWR3hoV1d4b1QxWXhXblZSYlVaVFRWWndNRlpxU2t0V1ZscDBaVWhrV0ZKdGVGaFpNbmh6VlRKS1IxTnNXbWxTTW1oWFZtMHhORmxYVWtoVWEyaHBVbTFTV0ZscmFFSmxSbVJaV2taa2FWSnVRbFJaVkVwdlZqSkdjMVp1VW14U2JWSllWakowYTFsV1NsbGhSbEpPVm01Q1dsWXhaREJXTWtwSlVXcE9WMDF1YUZoV1IzaGhZVEZLYzJOR1pGZGhhMXB5V1d0YVYxWnNaSFZqUlU1WVZtMVNVRlpYZEZkamJHUnlUVlYwVTAxV2NGbFhWM2hoVmpGd1YyRkdUbGRXZWtVd1ZsUkpNVlpHV25OVGJHaG9UVlZ3V0ZadE1VZFhiVlpIV2taV1YySklRa2hXYWtwTFYxWmFjVkp0ZEZOTlYxSllWakJrVTJGR1NuUlNiR1JxVFZad01WVnRlR3BsUm5CMFZHdGtWR0pIZUZWWmJHaFRWMFpzY2xwR1drNVdSVXB2VjFaU1MxUXhXWGhYYmtaVllrWndjbFZxUmt0V1ZscEhXVE5vYVUxWFVucFdNV2h2VjBkS1IxZHNhR3RTYlhoWVZqQmFhMkZHU2xWUmFrNVhZbGhTV0ZSV1pGTk5SbFY0Vld4a1YwMVhVbGRaVjNoVFZqRmtSMWR1VG1sU01taFlXV3RhWVZkR1duRlNiR1JPVFZad1dGbHJaRk5sYkZwMVdrWm9hVkl4U2xCV2JYQkRXVlpPU0dWSGRGZGhhM0JRV1RCYVlWUnNXWGhYYms1VVlUSlNWMVJXV25kV01ERjFZVWhLV2xaWFVrZGFWVnBQWVZaS2MyTkdaR2hOYldoWVZteFNSMWRXV2xobFJ6bFlVbXh3V1Zsc1ZtRlhSbEpXV2tVMVYySklRa2hXYlhoM1YxWmFkR1ZJWkZSWFIxSlpXV3RrUzFZeFduSk5WbHBPWW0xU1dGZFhlRzlXTURGWFYyNU9XR0pIVWpOV1J6RjNWakF4VjFkc1dsZFdia0paV2xWYVlWUXhXblZTYkdScVRWZFNlbGRyV2xkWlYwVjRZa1JTVjAxdVVuWldha1pMWXpGa2MxcEdaR2hsYkZwSlZtcEdhMUl4V2xkVGJsSnJVak5TVjFsVVRrTlhiRnB6VjJ0a1dHSlZXbGRVVmxwM1RWWlplV1JIT1ZkTlZXdzBXVlZrUzFZeFduSk5WbHBPWW10S1dWWXhXbUZqTVdSMFVteG9WMkpIVWxsWmJGWmhZekZrU0ZOclpHcFNWR3hoV1d4b1QxWXhXblZSYlVaVFRWWndNRlpxU2t0V1ZscDBaVWhrV0ZKdGVGaFpNbmh6VlRKS1IxTnNXbWxTTW1oWFZtMHhORmxYVWtoVWEyaHBVbTFTV0ZscmFFSmxSbVJaV2taa2FWSnVRbFJaVkVwdlZqSkdjMVp1VW14U2JWSllWakowYTFsV1NsbGhSbEpPVm01Q1dsWXhaREJXTWtwSlVXcE9WMDF1YUZoV1IzaGhZVEZLYzJOR1pGZGhhMXB5V1d0YVYxWnNaSFZqUlU1WVZtMVNVRlpYZEZkamJHUnlUVlYwVTAxV2NGbFhWM2hoVmpGd1YyRkdUbGRXZWtVd1ZsUkpNVlpHV25OVGJHaG9UVlZ3V0ZadE1VZFhiVlpIV2taV1YySklRa2hXYWtwTFYxWmFjVkp0ZEZOTlYxSllWakJrVTJGR1NuUlNiR1JxVFZad01WVnRlR3BsUm5CMFZHdGtWR0pIZUZWWmJHaFRWMFpzY2xwR1drNVdSVXB2VjFaU1MxUXhXWGhYYmtaVllrWndjbFZxUmt0V1ZscEhXVE5vYVUxWFVucFdNV2h2VjBkS1IxZHNhR3RTYlhoWVZqQmFhMkZHU2xWUmFrNVhZbGhTV0ZSV1pGTk5SbFY0Vld4a1YwMVhVbGRaVjNoVFZqRmtSMWR1VG1sU01taFlXV3RhWVZkR1duRlNiR1JPVFZad1dGbHJaRk5sYkZwMVdrWm9hVkl4U2xCV2JYQkRXVlpPU0dWSGRGZGhhM0JRV1RCYVlWUnNXWGhYYms1VVlUSlNWMVJXV25kV01ERjFZVWhLV2xaWFVrZGFWVnBQWVZaS2MyTkdaR2hOYldoWVZteFNSMWRXV2xobFJ6bFlVbXh3V1Zsc1ZtRlhSbEpXV2tVMVYySklRa2hXYlhoM1YxWmFkR1ZJWkZSWFIxSlpXV3RrUzFZeFduSk5WbHBPWW0xU1dGZFhlRzlXTURGWFYyNU9XR0pIVWpOV1J6RjNWakF4VjFkc1dsZFdia0paV2xWYVlWUXhXblZTYkdScVRWZFNlbGRyV2xkWlYwVjRZa1JTVjAxdVVuWldha1pMWXpGa2MxcEdaR2hsYkZwSlZtcEdhMUl4V2xkVGJsSnJVak5TVjFsVVRrTlhiRnB6VjJ0a1dHSlZXbGRVVmxwM1RWWlplV1JIT1ZkTlZXdzBXVlZrUzFZeFduSk5WbHBPWW10S1dWWXhXbUZqTVdSMFVteG9WMkpIVWxsWmJGWmhZekZrU0ZOclpHcFNWR3hoV1d4b1QxWXhXblZSYlVaVFRWWndNRlpxU2t0V1ZscDBaVWhrV0ZKdGVGaFpNbmh6VlRKS1IxTnNXbWxTTW1oWFZtMHhORmxYVWtoVWEyaHBVbTFTV0ZscmFFSmxSbVJaV2taa2FWSnVRbFJaVkVwdlZqSkdjMVp1VW14U2JWSllWakowYTFsV1NsbGhSbEpPVm01Q1dsWXhaREJXTWtwSlVXcE9WMDF1YUZoV1IzaGhZVEZLYzJOR1pGZGhhMXB5V1d0YVYxWnNaSFZqUlU1WVZtMVNVRlpYZEZkamJHUnlUVlYwVTAxV2NGbFhWM2hoVmpGd1YyRkdUbGRXZWtVd1ZsUkpNVlpHV25OVGJHaG9UVlZ3V0ZadE1VZFhiVlpIV2taV1YySklRa2hXYWtwTFYxWmFjVkp0ZEZOTlYxSllWakJrVTJGR1NuUlNiR1JxVFZad01WVnRlR3BsUm5CMFZHdGtWR0pIZUZWWmJHaFRWMFpzY2xwR1drNVdSVXB2VjFaU1MxUXhXWGhYYmtaVllrWndjbFZxUmt0V1ZscEhXVE5vYVUxWFVucFdNV2h2VjBkS1IxZHNhR3RTYlhoWVZqQmFhMkZHU2xWUmFrNVhZbGhTV0ZSV1pGTk5SbFY0Vld4a1YwMVhVbGRaVjNoVFZqRmtSMWR1VG1sU01taFlXV3RhWVZkR1duRlNiR1JPVFZad1dGbHJaRk5sYkZwMVdrWm9hVkl4U2xCV2JYQkRXVlpPU0dWSGRGZGhhM0JRV1RCYVlWUnNXWGhYYms1VVlUSlNWMVJXV25kV01ERjFZVWhLV2xaWFVrZGFWVnBQWVZaS2MyTkdaR2hOYldoWVZteFNSMWRXV2xobFJ6bFlVbXh3V1Zsc1ZtRlhSbEpXV2tVMVYySklRa2hXYlhoM1YxWmFkR1ZJWkZSWFIxSlpXV3RrUzFZeFduSk5WbHBPWW0xU1dGZFhlRzlXTURGWFYyNU9XR0pIVWpOV1J6RjNWakF4VjFkc1dsZFdia0paV2xWYVlWUXhXblZTYkdScVRWZFNlbGRyV2xkWlYwVjRZa1JTVjAxdVVuWldha1pMWXpGa2MxcEdaR2hsYkZwSlZtcEdhMUl4V2xkVGJsSnJVak5TVjFsVVRrTlhiRnB6VjJ0a1dHSlZXbGRVVmxwM1RWWlplV1JIT1ZkTlZXdzBXVlZrUzFZeFduSk5WbHBPWW10S1dWWXhXbUZqTVdSMFVteG9WMkpIVWxsWmJGWmhZekZrU0ZOclpHcFNWR3hoV1d4b1QxWXhXblZSYlVaVFRWWndNRlpxU2t0V1ZscDBaVWhrV0ZKdGVGaFpNbmh6VlRKS1IxTnNXbWxTTW1oWFZtMHhORmxYVWtoVWEyaHBVbTFTV0ZscmFFSmxSbVJaV2taa2FWSnVRbFJaVkVwdlZqSkdjMVp1VW14U2JWSllWakowYTFsV1NsbGhSbEpPVm01Q1dsWXhaREJXTWtwSlVXcE9WMDF1YUZoV1IzaGhZVEZLYzJOR1pGZGhhMXB5V1d0YVYxWnNaSFZqUlU1WVZtMVNVRlpYZEZkamJHUnlUVlYwVTAxV2NGbFhWM2hoVmpGd1YyRkdUbGRXZWtVd1ZsUkpNVlpHV25OVGJHaG9UVlZ3V0ZadE1VZFhiVlpIV2taV1YySklRa2hXYWtwTFYxWmFjVkp0ZEZOTlYxSllWakJrVTJGR1NuUlNiR1JxVFZad01WVnRlR3BsUm5CMFZHdGtWR0pIZUZWWmJHaFRWMFpzY2xwR1drNVdSVXB2VjFaU1MxUXhXWGhYYmtaVllrWndjbFZxUmt0V1ZscEhXVE5vYVUxWFVucFdNV2h2VjBkS1IxZHNhR3RTYlhoWVZqQmFhMkZHU2xWUmFrNVhZbGhTV0ZSV1pGTk5SbFY0Vld4a1YwMVhVbGRaVjNoVFZqRmtSMWR1VG1sU01taFlXV3RhWVZkR1duRlNiR1JPVFZad1dGbHJaRk5sYkZwMVdrWm9hVkl4U2xCV2JYQkRXVlpPU0dWSGRGZGhhM0JRV1RCYVlWUnNXWGhYYms1VVlUSlNWMVJXV25kV01ERjFZVWhLV2xaWFVrZGFWVnBQWVZaS2MyTkdaR2hOYldoWVZteFNSMWRXV2xobFJ6bFlVbXh3V1Zsc1ZtRlhSbEpXV2tVMVYySklRa2hXYlhoM1YxWmFkR1ZJWkZSWFIxSlpXV3RrUzFZeFduSk5WbHBPWW0xU1dGZFhlRzlXTURGWFYyNU9XR0pIVWpOV1J6RjNWakF4VjFkc1dsZFdia0paV2xWYVlWUXhXblZTYkdScVRWZFNlbGRyV2xkWlYwVjRZa1JTVjAxdVVuWldha1pMWXpGa2MxcEdaR2hsYkZwSlZtcEdhMUl4V2xkVGJsSnJVak5TVjFsVVRrTlhiRnB6VjJ0a1dHSlZXbGRVVmxwM1RWWlplV1JIT1ZkTlZXdzBXVlZrUzFZeFduSk5WbHBPWW10S1dWWXhXbUZqTVdSMFVteG9WMkpIVWxsWmJGWmhZekZrU0ZOclpHcFNWR3hoV1d4b1QxWXhXblZSYlVaVFRWWndNRlpxU2t0V1ZscDBaVWhrV0ZKdGVGaFpNbmh6VlRKS1IxTnNXbWxTTW1oWFZtMHhORmxYVWtoVWEyaHBVbTFTV0ZscmFFSmxSbVJaV2taa2FWSnVRbFJaVkVwdlZqSkdjMVp1VW14U2JWSllWakowYTFsV1NsbGhSbEpPVm01Q1dsWXhaREJXTWtwSlVXcE9WMDF1YUZoV1IzaGhZVEZLYzJOR1pGZGhhMXB5V1d0YVYxWnNaSFZqUlU1WVZtMVNVRlpYZEZkamJHUnlUVlYwVTAxV2NGbFhWM2hoVmpGd1YyRkdUbGRXZWtVd1ZsUkpNVlpHV25OVGJHaG9UVlZ3V0ZadE1VZFhiVlpIV2taV1YySklRa2hXYWtwTFYxWmFjVkp0ZEZOTlYxSllWakJrVTJGR1NuUlNiR1JxVFZad01WVnRlR3BsUm5CMFZHdGtWR0pIZUZWWmJHaFRWMFpzY2xwR1drNVdSVXB2VjFaU1MxUXhXWGhYYmtaVllrWndjbFZxUmt0V1ZscEhXVE5vYVUxWFVucFdNV2h2VjBkS1IxZHNhR3RTYlhoWVZqQmFhMkZHU2xWUmFrNVhZbGhTV0ZSV1pGTk5SbFY0Vld4a1YwMVhVbGRaVjNoVFZqRmtSMWR1VG1sU01taFlXV3RhWVZkR1duRlNiR1JPVFZad1dGbHJaRk5sYkZwMVdrWm9hVkl4U2xCV2JYQkRXVlpPU0dWSGRGZGhhM0JRV1RCYVlWUnNXWGhYYms1VVlUSlNWMVJXV25kV01ERjFZVWhLV2xaWFVrZGFWVnBQWVZaS2MyTkdaR2hOYldoWVZteFNSMWRXV2xobFJ6bFlVbXh3V1Zsc1ZtRlhSbEpXV2tVMVYySklRa2hXYlhoM1YxWmFkR1ZJWkZSWFIxSlpXV3RrUzFZeFduSk5WbHBPWW0xU1dGZFhlRzlXTURGWFYyNU9XR0pIVWpOV1J6RjNWakF4VjFkc1dsZFdia0paV2xWYVlWUXhXbl
返回列表