PolarEDF 2026夏季个人挑战赛 2026 个人赛

PolarEDF 2026夏季个人挑战赛

围绕 PolarEDF 2026夏季个人挑战赛 的公开复盘与解题记录。

上传者:Serendipity 发布日期:2026-06-08 76 次阅读

检材密码:a6a848470fd9981cc100452941fabcbe

本来不打算打了,后面想想再打一届吧,下届就不打了,不好意思获奖了

有三道题没出来,有一道题比赛结束后AI跑出来了 ** **账号应该是电子数据.com-Serendipity,创建账号不小心点了个回车,让管理员删账号没想到把我靶场账号删了😭

PC端

1.此电脑的默认浏览器是什么?答案格式:Google Chrome

Microsoft Edge

仿真之后,点击设置-应用-默认应用,可以看到

2.此电脑的当前MAC地址是多少?答案格式:xx-xx-xx-xx-xx-xx

00-0C-29-FF-80-1D

查看网络适配器

3.此电脑蓝牙网络连接的MAC地址是多少?答案格式:xx-xx-xx-xx-xx-xx

98-5F-41-8D-A0-49

同上

4.此电脑的产品密钥是多少?答案格式:xxx-xxx-xxx-xxx-xxx

W269N-WFGWX-YVC9B-4J6C9-T83GX

查看系统信息

5.此电脑的注册所有者?答案格式(1111@gmail.com)

263341492@qq.com

查看用户列表

6.此电脑的node版本是多少?答案格式:v1.1.1(以实际为准)

v24.15.0

点击win+R,输入node -v

7.邮件中秘密传输的信息?答案格式:谁懂我多么不舍得

我的爱已失眠

在网易邮件大师中看到邮箱

复制文字内容,零宽字节解密一下

8.AI软件中存在的flag是什么?(如果需要登陆密码,登录密码是waslhf加两个重复数字,比如waslhf00。)答案格式:flag {xxxxxxxxxxxxxxxxxxxxxx}

flag{example_random_string_here}

在目录C:\Users\26334\.astrbot\data中看到一个db文件

导出看一下,发现没看到flag,全局搜索一下

查看该文件

9.AI软件使用的模型和api_key是什么?(模型名称即可,不要带版本号)答案格式:chatgpt-apikey

deepseek-sk-a986d6ecb8264797a252805a01b700b9

在目录C:\Users\26334\.astrbot\data中找到cmd_config.json文件

10.嫌疑人使用远程连接软件连接过的服务器ip是多少?答案格式:1.1.1.1

49.233.169.226

打开桌面上的X

11.用户为小野猫的AI机器人为他生成的密钥是什么?答案格式:1-1-1(以实际为准)

零解,不做了

12.vc容器的挂载密码?答案格式:以实际为准

201609-1-1-986677384885

在回收站中找到两个文件

在VC目录下还看到两个文件

看到有个VC密码的图片,应该考察的图片引写了

有个二维码,扫码可得

难绷,用随波逐流打开图片,foremost分离一下

打开看看

破解一下这个压缩包

解压之后看到一个冰箱,好熟悉的题目

查询一下

成功挂载

13.病毒程序最终会连接服务器的ip地址和端口?答案格式:1.1.1.1:22

49.233.169.226:11111

对这个exe进行分析,既然是病毒,直接去放沙箱看看

14.apk中的密码?答案格式:11111

123456

见下题

15.apk中的flag是什么?答案格式:flag {xxxxxxxxx}

没交上去,AI当时没跑出来

flag{ruguoquanashijiewoyekdasd}

Step 1:分析 APK 结构

**解压 **dex.apk,发现没有正常的 classes.dex,取而代之的是加密文件:

encrypted_classes.dex    (4,495,488 bytes)
encrypted_classes2.dex   (389,360 bytes)
encrypted_classes3.dex   (6,640 bytes)
assets/encrypted_classes.dex
assets/encrypted_classes2.dex
assets/encrypted_classes3.dex

**这些文件头部不是 DEX 魔数 **64 65 78 0a,而是随机密文,说明 DEX 被加密了。

Step 2:AES-CBC 解密 DEX 文件

根据题目提示:

  • 密钥1234567890123456,需要 ljust(32) 填充到 32 字节,Python 的 ljust 默认用空格填充
  • IV:取每个加密文件的前 16 字节
  • 算法:AES-CBC,PKCS5Padding
from Crypto.Cipher import AES
​
key = b'1234567890123456'.ljust(32)  # 空格填充至32字节
​
for enc_file in ['encrypted_classes.dex', 'encrypted_classes2.dex', 'encrypted_classes3.dex']:
    with open(enc_file, 'rb') as f:
        data = f.read()
    iv = data[:16]           # 前16字节作为IV
    ciphertext = data[16:]   # 剩余为密文
    cipher = AES.new(key, AES.MODE_CBC, iv)
    plaintext = cipher.decrypt(ciphertext)
    # 去除PKCS7填充
    pad_len = plaintext[-1]
    if pad_len <= 16:
        plaintext = plaintext[:-pad_len]
    # 保存为 classes.dex / classes2.dex / classes3.dex
    with open(enc_file.replace('encrypted_', ''), 'wb') as f:
        f.write(plaintext)

**解密后文件头部为 **64 65 78 0a(DEX 魔数),确认解密成功。

Step 3:反编译 classes3.dex

**使用 androguard 反编译 **classes3.dex,找到 MainActivity 的核心逻辑:

// lambda$onCreate$0 - 登录按钮点击事件
public void onClick(View v) {
    String enteredPassword = passwordEditText.getText().toString();
​
    // 密码验证:hexToString("313233343536")
    String correctPassword = hexToString("313233343536");
    if (enteredPassword.equals(correctPassword)) {
        // 密码正确,解密flag
        String encryptedHex = "4e44494f535a5d4f5d47595d4946495b404142414d5f47514d434c495b4c55";
        String decryptedFlag = xorDecryptHex(encryptedHex, 40);  // XOR key = 0x28
        Toast.makeText(this, "Decrypted Flag: " + decryptedFlag, Toast.LENGTH_SHORT).show();
​
        // 加载解密后的DEX
        loadDex(getApplicationContext(), "encrypted_classes.dex");
        loadDex(getApplicationContext(), "encrypted_classes2.dex");
        loadDex(getApplicationContext(), "encrypted_classes3.dex");
    } else {
        Toast.makeText(this, "Invalid Password", Toast.LENGTH_SHORT).show();
    }
}

Step 4:提取密码

hexToString("313233343536") 将十六进制字符串转为 ASCII:

password = bytes.fromhex("313233343536").decode()
# 结果:123456

Step 5:解密 Flag

xorDecryptHex("4e44494f535a5d4f5d47595d4946495b404142414d5f47514d434c495b4c55", 40) 逻辑:

  1. 将十六进制字符串转为字节数组
  2. **每个字节与 **40(0x28)进行 XOR 运算
  3. 将结果转为字符串
encrypted_hex = "4e44494f535a5d4f5d47595d4946495b404142414d5f47514d434c495b4c55"
encrypted_bytes = bytes.fromhex(encrypted_hex)
xor_key = 40  # 0x28
flag = bytes([b ^ xor_key for b in encrypted_bytes]).decode()
# 结果:flag{ruguoquanashijiewoyekdasd}

移动端

1.手机的操作系统版本是什么?答案格式:3

10

查看设备信息

2.嫌疑人王者荣耀的最高战力英雄是谁?答案格式:李白

李信

在图片中可以找到

3.当月使用wifi流量最多的软件包名是什么?答案格式:com.xxxx.xx

com.qihoo.appstore

查看网络使用详情,对wifi流量进行筛选

4.手机镜像通过什么软件制作的?答案格式:软件名称

雷电手机快取

用X-Ways打开,尾部数据可以看到

5.嫌疑人是文玩爱好者,他喜欢的文玩是什么?答案格式:手镯

不知道这是个啥

6.嫌疑人在手机中使用的命令行窗口工具是什么?答案格式:cmd

Termux

在截图中可以看到

7.嫌疑人使用命令行窗口工具一共输入过几条命令?答案:1

6

试了一下发现截图命令数是错误的,搜索程序包名,在com.termux/data/user/0/com.termux/files/home/.bash_history找到

8.嫌疑人使用的聊天软件包名是什么?答案格式:com.xxx.xxx

com.utalk1.im

在应用列表中筛选非系统,可以看到

9.嫌疑人最常用的ai软件是什么?答案格式:软件名称

口袋AI

见上题,然后可以看到口袋AI

10.聊天软件的加密数据库是什么?答案格式:xxx.db

wk_31aa3a4add7d4659bb878f99440a4381.db

搜索聊天软件包名com.utalk1.im,查看数据库文件

11.疑人使用什么货币流通赃款?答案格式:货币名称

USTD

致敬fic的数据库

拿数据库名称31aa3a4add7d4659bb878f99440a4381解密一下数据库,用DB Browser for SQLCipher打开

然后在聊天记录中可以看到

12.嫌疑人的邀请码是多少?答案格式:123456

ZZNB666

聊天记录中可以看到

13.其常用的AI大模型是什么?答案格式:Qwen3.7-Max

DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M

搜索口袋ai的包名com.pocketwisdom,在<font style="color:rgba(0, 0, 0, 0.87);">/com.pocketwisdom/files/models/preset/unsloth/</font>目录下找到

14.嫌疑人2026年4月28日12:57问AI的问题是什么?答案格式:我是谁

如何吸引大家下载性感视频APP

在同目录<font style="color:rgba(0, 0, 0, 0.87);">/files/session-metadata.json</font>文件中可以看到

15.分析嫌疑人使用的虚拟定位应用,提取出该应用在崩溃监控平台中生成的唯一设备标识符(UUID)是什么?答案格式:xx-xx-xx-xx-xx

比赛结束后问了一下,说是在dex3,有个xor,后面试试

16.“私密影院”的签名证书MD5是多少?答案格式:abc123

403c53e95d9bd0b10c46a383dd1a221c

17.“私密影院”的为危险权限有几个?答案格式:1

2

18.“私密影院”的回传服务器ip及端口是多少?答案格式:127.0.0.1:1111

192.168.8.36:8888

**在 **MainActivitysetupFakeC2Config() 方法中找到

19.“私密影院”的管理员账号密码是什么?答案格式:账号_密码

DongBeiMeiMo_PengPengLovX-250210

将apk后缀改为zip解压

**管理员账号密码通过JNI native方法获取,存储在 **libnative-lib.so

getAdminUser():通过3个dword拼接返回字符串

mov dword [esp+0x4], 0x676e6f44   ; "Dong"
mov dword [esp+0x8], 0x4d696542   ; "BeiM"
mov dword [esp+0xc], 0x6f4d6965   ; "eiMo"

→ 用户名:DongBeiMeiMo

**getAdminPass():从 **.rodata 段加载16字节 + 拼接 "210"

rodata: "PengPengLovX-250"
拼接: "210"

→ 密码:PengPengLovX-250210

getXorKey():同样通过dword拼接

0x656e7770 → "pwne"
0x74635f64 → "d_ct"
0x30325f66 → "f_20"
0x363230    → "026\0"

→ XOR密钥:pwned_ctf_2026

20.“私密影院”窃取的短信有多少条?答案格式:1

1156347

**这是最隐蔽的一道题。短信数量不是写在代码逻辑中,而是硬编码在布局XML文件 **activity_main.xml 的管理后台界面中。

**当管理员登录后,应用会显示 **layout_admin 布局,其中包含一个"全网数据截获大盘"区域:

<LinearLayout
    android:orientation="vertical"
    android:background="#2a2a2a"
    android:padding="20dp" ...>

    <TextView
        android:textSize="16sp"
        android:textStyle="bold"
        android:textColor="#ffffff"
        android:text="📊 全网数据截获大盘"/>

    <TextView
        android:textColor="#4caf50"
        android:text="📷 获取私密图片: 124,478 张"/>

    <TextView
        android:textColor="#2196f3"
        android:text="📩 获取短信: 1,156,347 条"/>

    <TextView
        android:textColor="#9c27b0"
        android:text="📱 获取通讯录: 62,578 条"/>
</LinearLayout>

关键信息:获取短信:1,156,347 条

**去除逗号后答案为 **1156347

服务器

1.该服务器的操作系统是什么?答案格式:liunx xx.xx.xx AAA

Ubuntu 24.04.4 LTS

直接查看系统信息

2.该服务器的内核版本是什么?答案格式:x.x.x-x-xx

6.8.0-101-generic

同上

3.该服务器的主机名是什么?答案格式:xx-x-x-liunx

VM-0-5-ubuntu

同上

4.该服务器使用什么工具管理服务器?答案格式:宝塔面板

宝塔面板

直接解析出了宝塔面板

5.接上题,该工具的用户名是什么?答案格式:csia12i1

5dbumzgq

查看面板账号信息

6.在服务器的root目录下,有一个聊天室文件夹,该聊天室的路径是什么?答案格式:xx.E01/xx/…./

贾贾.E01/分区5/root/has-chat

仿真没搞好,直接查看文件路径,看到chat

7.接上题,该服务器的ip地址是多少?答案格式:192.168.x.x

111.229.26.3

查看该目录下的.env文件可以找到

8.接上题,该聊天室的端口是多少?答案格式:1213

9527

查看该目录下的另一个.env文件可以找到

9.该聊天室配置的数据库密码是什么?答案格式:znoqwhqo

b6f64318d9fb4d7d

在目录/root/has-chat-service找到config.js

10.数据库的名称是什么?答案格式:niicoq

haschat

见上题

11.数据库有几个表名?答案格式:1

6

/root/has-chat-service/store/mysql8目录下看到六个表

12.User表下有几个字段?答案格式:1

14

导出user.sql文件,然后用navicat运行一下

13.User表下有几个测试账号?答案格式:1

14

14个账号都是测试账号

14.玛格丽特小姐的测试邮箱是什么?答案格式:xnio@128.com

test@163.com

第一行直接往后看即可

15.该聊天室项目使用的什么进程管理工具?答案格式:PM2

PM2

**浏览 **/root目录,发现.pm2目录

浏览/etc/systemd/system/目录,发现pm2-root.service服务文件

**PM2是Node.js的进程管理工具,用于管理 **has-chathas-chat-service 的运行

16.分区5的文件系统是什么?答案格式:ext4

ext4

查看分区详情

17.用于安装依赖的命令是什么?答案格式:xxx xxx

npm install

这题可以靠基础,也可以直接查看历史命令

18.用户最爱玩的游戏的英雄是什么?答案格式:李白

蚩奼

/www/wwwroot/ 目录下,找到三个游戏相关目录

wzry目录中有最爱玩的英雄

19.接上题,该文件夹的路径是什么?答案格式:xx.E01/xx/….

贾贾.E01/分区5/www/wwwroot/wzry

见上题

20.该服务器的时区是什么? 答案格式:shangha1/beijinf

Asia/Shanghai

查看/etc/timezone文件