当前位置: 首页 > ai >正文

轩辕杯Wp

密码dp

Misc

Terminal Hacker

非预期:下载附件发现是exe加密猜测为exe转pyc但是进行读取1.pyc发现是可以直接读取到flag的

预期:

连接终端 进行提示一步步操作拿到flag

逆向Ezre

将文件放入PE发现存在upx尝试脱壳发现报错

猜测为魔改UPX将文件放入010里的确存在

进行修复

接着再次尝试脱壳发现成功了

将脱完壳的exe让入ida进行分析发现存在自定义base64

直接搓一个脚本

import base64def decrypt_flag():target = "iP}ui7siC`otMgA~h5o]Tg<4jPmtIvM5C~I4h644K7M~KVg="xor_restored = ''.join(chr(ord(c) ^ 4) for c in target)modified_charset = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789+/"standard_charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"standard_b64 = ''.join(standard_charset[modified_charset.index(c)] if c != '=' else '='for c in xor_restored)try:decoded_bytes = base64.b64decode(standard_b64)flag = decoded_bytes.decode('utf-8')return flagexcept UnicodeDecodeError:return decoded_bytes.hex()except Exception as e:print(f"解码失败: {e}")return standard_b64if __name__ == "__main__":flag = decrypt_flag()print(f"解密后的flag: {flag}")print(f"长度验证: {len(flag)} 个字符")

Misc 八卦

用 PIL 打开 JPEG 并读出 EXIF信息,发现 usercomment 字段里是一串八卦符号类似于

这些符号恰好是 Unicode范围 U+2630到U+2637的八卦(三、三、三、、三、三、三、)。要把它们转换成数字,需要用「伏羲先天八卦」的顺序对应到3位二进制(或八进制)

因此,逐个把 usercomment 里的 trigram 符号替换成对应的八进制数字,就得到一连串的八进制数(每个符号对应 0-7 中的一个)。

# 伪代码示意:将 ☰…☱…☲… 等转换为 '7','6','5',...
mapping = {'\u2630': '7',  # ☰ → 7'\u2631': '6',  # ☱ → 6'\u2632': '5',  # ☲ → 5'\u2633': '4',  # ☳ → 4'\u2634': '3',  # ☴ → 3'\u2635': '2',  # ☵ → 2'\u2636': '1',  # ☶ → 1'\u2637': '0',  # ☷ → 0
}
digits = ''.join(mapping[ch] for ch in user_comment_string if ch in mapping)

拿到的八进制数字串打印出的结果

2646657032055063350421452543452426254154314535271623053014443171264530712106106215267124256661652643

每个八进制数字代表3位二进制。所以把“264665."中的每个字符当作3位二进制来拼接,总共会得到约139x3=417 位的位流。然后将这 417 位按8位一组截取

# 将每个八进制数字转为 3 位二进制
bitstream = ''.join(bin(int(d, 8))[2:].zfill(3) for d in digits)  # 每个都补足 3 位# 去掉末尾不满 8 位的部分
trim_len = (len(bitstream) // 8) * 8
bitstream = bitstream[:trim_len]# 按 8 位一组转换为字节
bytes_out = bytes(int(bitstream[i:i+8], 2) for i in range(0, trim_len, 8))

解码后 bytes_out 是一串 52 字节的数据。把这几字节用 ASCI/UTF-8 直观显示,会发现它是一段可打印字符

base64

Zmxhz3tDeV9TYX1fWN91X2FyZV9Db25nTWluz0Rhb190b1B5f0==

进行还原解密

import base64b64 = b"ZmxhZ3tDeV9TYXlfWW91X2FyZV9Db25nTWluZ0Rhbl9Ob1B5fX=="
flag = base64.b64decode(b64).decode('ascii')
print(flag)
# 输出:flag{Cy_Say_You_are_CongMingDan_NoPy}

http://www.xdnf.cn/news/7741.html

相关文章:

  • 【Java】泛型在 Java 中是怎样实现的?
  • java day14
  • debian系统redis-dump安装
  • Vite + Vue 工程中,为什么需要关注 `postcss.config.ts`?
  • 如何用JAVA手写一个Tomcat
  • c#基础03(运算符)
  • LeetCode 3355.零数组变换 I:差分数组
  • 34、React Server Actions深度解析
  • 07 接口自动化-用例管理框架之pytest单元测试框架
  • CSS:margin的塌陷与合并问题
  • 每日Prompt:实物与手绘涂鸦创意广告
  • MySQL5.7导入MySQL8.0的文件不成功
  • flutter 常用组件详细介绍、屏幕适配方案
  • GPU加速Kubernetes集群助力音视频转码与AI工作负载扩展
  • PostgreSQL使用
  • Canvas进阶篇:鼠标交互动画
  • Java 安全SPEL 表达式SSTI 模版注入XXEJDBCMyBatis 注入
  • 2025年渗透测试面试题总结-快手[实习]安全工程师(题目+回答)
  • ToDesk云电脑、并行智算云与顺网云AI支持能力深度实测报告
  • 25、工业防火墙 - 工控网络保护 (模拟) - /安全与维护组件/industrial-firewall-dcs-protection
  • 遨游科普:三防平板有哪些品牌?哪个品牌值得推荐?
  • tomcat知识点
  • PostgreSQL
  • 如何使用Antv X6使用拖拽布局?
  • AG-UI:重构AI代理与前端交互的下一代协议标准
  • 腾讯位置服务重构出行行业的技术底层逻辑
  • 第15天-NumPy科学计算实战:从基础到图像处理
  • Lambda表达式的高级用法
  • RPC 协议详解、案例分析与应用场景
  • Ubuntu部署私有Gitlab