0%

友情链接

「影」核心系统「根」需要在一些开启了特殊特性的机器上才能部署成功,逆向找到成功部署条件!成功部署「影」核心系统,即成功运行shadow_panel.exe,控制台程序成功运行进入至输入终止密码的终端。(满分0.5分)

启动阶段执行了如下操作:

Phase 0(sub_144A07540):Hyper-V + IOMMU 检测

  1. CPUID(1) → 检查 ECX bit 31(Hypervisor Present bit)

  2. CPUID(0x40000000) → 验证 Hypervisor vendor = “Microsoft Hv”

  3. IOMMU (DMAR/IVRS) → 通过 NtQuerySystemInformation(76) 查询 ACPI 固件表,检查是否存在:

   - Intel VT-d: DMAR 表签名 0x52414D44

   - AMD-Vi: IVRS 表签名 0x53525649

Phase 1(sub_144A075F0):VHD路径准备

  • 准备 VHD 部署路径 C:\Windows\Temp\WdiServiceHost\

  • 清理旧文件

Phase 2(sub_144A07620):驱动部署

  • 调用 sub_144A05540 进行驱动部署:

  1. 先执行 CPUID(0xDEADBEEF, 0x114514),若 EAX == 0x01919810 则说明hypervisor已活跃,跳过部署

  2. 生成随机服务名,构建路径 + “.sys”

  3. CreateFileW → WriteFile(驱动blob来自 .data 段 unk_145CCA010)→ CloseHandle

  4. 通过.tvm0中的代码创建/挂载VHD并部署驱动

  5. OpenSCManagerW → 清理服务 → DeleteFileW

Phase 3(sub_144A07650):Hypervisor激活验证

  • 再次 CPUID(0xDEADBEEF, 0x114514)

  • 验证 EAX == 0x01919810(26318864 十进制)

  • 确认 HyperCharge hypervisor 已成功安装并激活

因此需要机器需要支持IOMMU,并且开启了Hyper-V之后,通过管理员权限启动shadow_panel.exe即可进入输入密码的终端。启动后可以看见输入框

阅读全文 »

2025腾讯游戏安全初赛PC

1 .exe初探

下发了一个.exe和一个.sys,在真机不太敢直接调.sys文件,丢到调试环境里面去

image.png

在调试环境里面能跑起来,随便给点输入回显Flag not correct!

.exe丢进IDA看看

找到输入逻辑和检测前缀的逻辑

image.png

然后发现后面一堆混淆,静态不太好看,调试一下.exe程序看看

发现调试的时候经常进一个abort()

image.png

怀疑有反调试,稍微找找常见的调试检测函数,发现用了CheckRemoteDebuggerPresent

阅读全文 »

参考一些网络上的教程配置fortigatef路由器

Untitled

固件提取

1
2
3
sudo virt-filesystems -a fortios.vmdk  查看磁盘分区

sudo guestmount -a FGT_VM64-disk1.vmdk -m /dev/sda1 fortios 挂载分区

Untitled

复制一份rootfs.gz,解压出来

Untitled

1
2
3
4
5
sudo chroot . /sbin/xz --check=sha256 -d /bin.tar.xz

sudo chroot . /sbin/ftar -xf /bin.tar

这里的.tar.xz文件是飞塔使用了自己改版的xz和tar压缩的,所以直接使用xz和tar解压不了。要用chroot切换根目录使用sbin中的xz和ftar进行解压。
阅读全文 »

joyVBS-pcb2024

1
2
3
4
5
6
7
8
9
10
11
12
import re

# 定义正则表达式,用于匹配符合条件的数字和运算符序列
pattern = re.compile(r"\s[0-9+\-/*]+\s")

# 读取文件并进行匹配和转换
with open("chall.vbs", "r") as file:
content = file.read()
matches = pattern.findall(content)
decoded_text = ''.join(chr(int(eval(match.strip()))) for match in matches)
print(decoded_text, end="")

阅读全文 »