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
清香白莲 发表于 2017-11-18 09:42
发现是一个数独游戏,找到数独表,直接解数独就可以了。
可以的,这个可以学习,写楼主分享 Yoshio 发表于 2017-11-17 23:20
一脸懵逼,这计算竟然都看不懂。。。
发现是一个数独游戏,找到数独表,直接解数独就可以了。 表示一脸懵逼! 图片7跑到下面了,调不上去,不知道为什么... 谢谢分享 一脸懵逼,这计算竟然都看不懂。。。 楼主发的数独克星网站很给力啊!收藏了! 仰慕大佬。。 这个是是什么?
谢谢分享谢谢分享