清香白莲 发表于 2017-11-17 22:53

2017第十届全国大学生信息安全竞赛——“填数游戏”writeup

本帖最后由 清香白莲 于 2017-11-18 09:40 编辑

周五还有俩小时下班了,闲来无事,想着很久没玩CTF了,就在I春秋上找了个,练练手。
这一题难度中下等,关键是找到9*9的数独。
废话不多,直接开干!使用工具:OD,IDA。
运行程序,发现就是一个控制台,没有任何提示,随便输入一些内容,回车,控制台程序结束运行。没什么有用的信息,直接上IDA看吧。
IDA里立刻就可以看到“success”和“fail”的字样:


分析难度很简单了,想办法走正确的道路就可以了。
上OD调试,发现0x4014C0之前的都是初始化(事实上这里初始化了9*9数独),sub_403050是获取输入内容。
至此,我们要分析的函数就只有两个了,0x4014d5处的callsub_401340.和0040151A处的call sub_42DC3C。
首先分析sub_401340,函数过程很简单,利用sub_42fb58每次取一个字符,sub_42F820中判断是不是最后一个字符,执行指令lea   esi, ,获取输入的字符串的ascii码-0x30,sub_42DA98判断输入的值的格式是否正确,接下来存入数独表。
9*9数独,用户需要输入81个数,数独表中本来有值的地方,用户需要输入0。
   

接着分析sub_42DC3C,也很简单,只有三个函数,分别是判断3*3方格、每一行、每一列数字是不是没有重复。


    至此已经分析出来,这题就是求数独解的,数独如下:
找工具得到解:http://shudu.gwalker.cn/

结果:
340089102508406930016207058060875349709064820854392006093650071170023604602740590

Yoshio 发表于 2017-11-18 14:48

清香白莲 发表于 2017-11-18 09:42
发现是一个数独游戏,找到数独表,直接解数独就可以了。

可以的,这个可以学习,写楼主分享

清香白莲 发表于 2017-11-18 09:42

Yoshio 发表于 2017-11-17 23:20
一脸懵逼,这计算竟然都看不懂。。。

发现是一个数独游戏,找到数独表,直接解数独就可以了。

啭裑 发表于 2017-11-17 23:03

表示一脸懵逼!

清香白莲 发表于 2017-11-17 23:05

图片7跑到下面了,调不上去,不知道为什么...

rep_su 发表于 2017-11-17 23:17

谢谢分享

Yoshio 发表于 2017-11-17 23:20

一脸懵逼,这计算竟然都看不懂。。。

rock_out 发表于 2017-11-17 23:36

楼主发的数独克星网站很给力啊!收藏了!

一念天堂地狱 发表于 2017-11-17 23:49

仰慕大佬。。

莫丽丽 发表于 2017-11-18 08:17

这个是是什么?

gu1001 发表于 2017-11-18 09:13

谢谢分享谢谢分享
页: [1] 2 3 4 5 6
查看完整版本: 2017第十届全国大学生信息安全竞赛——“填数游戏”writeup