吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2861|回复: 8
收起左侧

[CTF] 结合z3求解2025新春题目DaNianChuErNoadopted的flag

[复制链接]
Barnes 发表于 2025-1-30 14:18
本帖最后由 Barnes 于 2025-1-30 14:20 编辑

结合z3求解DaNianChuErNoadopted的flag

直接丢进IDA,观察main函数
image-20250130135629536.png

分析可知,main函数接收了用户输入并且将输入传到sub_401010函数中。

sub_401010函数大致逻辑如下:
image-20250130135735847.png

注意到反编译代码中将输入字符与数字比对,这里需要将光标放在数字上面右键,菜单中选择Char,或将单击数字后按R键
image-20250130135831381.png

修改后:
image-20250130135951147.png

可以看到前两个字符,分别是H和a

第三个和第四个字符是相同的,并且有一个判断条件,可以将这个条件输入z3求解

image-20250130140125038.png
输出为:
image-20250130140138846.png

根据ASCII码表,对应字符p

((unsigned __int8)input[1] ^ 0x18) == input[4]

第5个字符根据第2个字符推出,第2个字符是a,python中输出:
image-20250130140407374.png

现在已知前五个字符,Happy

后面是数字

(double)(int)(__int64)(cos(1.36690694026) * 10000.0 + 0.5) * 0.0001 == (double)number * 0.0001

等式两段都乘了0.0001,可忽略,先用python算出前面表达式的值
image-20250130140616181.png

得2025,可知flag为Happy2025
image-20250130140640741.png

中文字符串处理

image-20250130135454477.png

中文是不能正常显示的,需要设置一下IDA中对字符串的编码格式,如下:
image-20250130135443496.png
image-20250130135434561.png

设置完毕后,双击一个字符串地址处,按a,全部完成后回到反编译界面F5刷新即可

免费评分

参与人数 3威望 +1 吾爱币 +26 热心值 +2 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
chao0927 + 1 谢谢@Thanks!
烟99 + 5 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

烟99 发表于 2025-1-30 17:26
恭喜,你是这些人里分析的相对全面的,至少没用AI,等大年初五公布源码吧
52pojie1111 发表于 2025-1-30 23:35
nanaqilin 发表于 2025-1-31 12:46
烟99 发表于 2025-1-30 17:26
恭喜,你是这些人里分析的相对全面的,至少没用AI,等大年初五公布源码吧

当我看到那个 cos函数的时候,立马就想到这玩艺儿如果脑力算的话,头发都得掉光了,然后果断AI入场,瞬间发现了好几个答案
yzy6699 发表于 2025-1-31 21:07
这个题目在哪里呢
lnyper 发表于 2025-1-31 22:20
还是没看明白,需要好好补知识了
ahov 发表于 2025-2-2 09:59
本帖最后由 ahov 于 2025-2-2 10:22 编辑
nanaqilin 发表于 2025-1-31 12:46
当我看到那个 cos函数的时候,立马就想到这玩艺儿如果脑力算的话,头发都得掉光了,然后果断AI入场,瞬间 ...

你被AI忽悠得不轻啊
你在程序里面验证flag了吗

IMG_0991.png
根据图中表达式,两边都乘以了一个0.0001,因此我们把它约去(即两边同时除以0.0001)之后等式仍然相等。
因此我们需要计算表达式cos(1.36690694026) * 10000 + 0.5
我还特地拿出了我的计算器,给你按一下:
根据角度单位的不同
在角度制(D)下,结果为9997.654346
IMG_0993.JPG

在弧度制(R)下,结果为2025.296763
IMG_0992.JPG

在百分度制(G)下,结果为9998.195
IMG_0994.JPG

根本就不会出现2037
而且我验证了一下,9997和9998程序也是不认的,程序显然是按照弧度制计算的

flag后4位只能是2025,你那个所谓的2037没有验证过吧,AI算错了
我还特地重新跑了一下程序,你那个所谓的2037程序里面也不认
Snipaste_2025-02-02_09-56-11.png

这是一条固定的数学算式,除非是角度单位不同,怎么可能有多个解呢。我是真不想说你,数学是体育老师教的吗。。
动态调试断出来也只能是2025
amwquhwqas128 发表于 2025-2-2 23:05
还是看不懂,要好好学习
超逸绝尘 发表于 2025-2-5 00:01
虽然看不懂,但是感觉很厉害
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-1 09:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表