首页
社区
课程
招聘
[原创] z3 巧解CTF逆向题
发表于: 2018-2-3 01:59 11517

[原创] z3 巧解CTF逆向题

2018-2-3 01:59
11517

题目下载链接:f2fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4u0W2N6X3g2J5M7$3W2F1k6#2)9J5k6h3E0J5i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8Q4x3X3g2H3K9s2m8Q4x3@1k6F1i4K6y4p5y4H3`.`.

这次实验的题目为Reversing.kr网站中的一道题目。

题目要求:

这是一道典型的用户名-序列号形式的题目,序列号已经给出,且用户名的最后一位为p。

通俗讲,就是解方程。比如使用z3解二元一次方程:

z3代码如下:
ipython 交互

z3 难道就只能用来解小学方程吗?当然不是!来看题。

界面有两个输入框,无按钮,直接对GetWindowTextW下断后两次向上回溯即可到达核心逻辑函数,下面为该函数的代码。

username 只有4个字节。
serial 只有11字节,且第serial[5]=='-'。

这段代码量不是很多,只要细心,很快就能找出所有的限制条件。
1、username[0~3]值域为['a','z']
2、username[3] == 'p' //这个是题目给出的条件,非逆向所得。
3、0x0代码片段中有10个方程:

ord是python中的函数,功能是将字符转成对应int。为什么我要这么做呢?从逆向出的代码片段可知,原程序用itow_s将运算值转为文本,然后取文本的最高位和输入的ASCII进行比较,但是运算结果只有一位数,我就直接用加减0x30,其次z3条件里面好像不能有str()这样的函数出现。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
最新回复 (8)
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
2
这题我看只有四位,当时直接爆破的(逃
2018-2-3 08:22
0
雪    币: 58782
活跃值: (21921)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
建议将题目附件上传到论坛本地保留一份。
2018-2-3 09:53
0
雪    币: 7129
活跃值: (9949)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
4
kanxue 建议将题目附件上传到论坛本地保留一份。
已经上传附件。
2018-2-3 12:58
0
雪    币: 58782
活跃值: (21921)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
无名侠 已经上传附件。
感谢分享!
2018-2-3 13:20
0
雪    币: 3
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大神
2018-2-3 13:53
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
膜拜,虽然不懂,不影响姐以你为荣的得瑟心。
2018-2-3 15:04
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
2018-2-3 15:13
0
雪    币: 1849
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习,感觉很高级的样子
2018-3-26 17:18
0
游客
登录 | 注册 方可回帖
返回