zoukankan      html  css  js  c++  java
  • 【逆向笔记】2017年全国大学生信息安全竞赛 Reverse 填数游戏

    2017年全国大学生信息安全竞赛 Reverse 填数游戏

    起因是吾爱破解大手发的解题思路,觉得题挺有意思的,就找来学习学习

    这是i春秋的下载链接

    http://static2.ichunqiu.com/icq/resources/fileupload/CTF/echunqiu/qgdxs/numgame_8808BCE6D17A3EF92461A50079264767.zip

    以防万一呢,我在网盘也放了一份名字叫numgame_8808BCE6D17A3EF92461A50079264767.zip

    https://pan.baidu.com/s/1jINx7Fo

    首先通过字符可以定位到主函数

     

    从success网上第一个函数check,是一个对输入数据做校验的函数,返回1则success,check里分为三块内容,check_block,check_col,check_row。

    可以看到check函数对输入的内容进行了遍历,分别从块,列,行进行

     

    set_number函数是对答案的另一个限制条件,需要在原有数字的位置上输入为0.

     

    接下来再往上看,发现初始化函数

    Sudu::Sudu(&v14);

    Sudu::set_data((int)&v14, (Sudu *)&_data_start__, v5);

    _data_start__保存了一大串数组,set_data函数记录了读取数数组的方法

    网上的思路

     

    但是我不是这么干的,我用的笨方法,我把数据段的内容拷出来,用脚本处理了一下

    shudu = []
    f = open('rtrace1.txt','r')
    txt = f.readlines()
    for i in txt:
        txt1 = i.split('
    ')
        temp = txt1[0].split('    ')[-1]
        shudu.append(temp)
    # print(shudu)
    for i in range(81):
        print("%d " % int(shudu[i*4]),end='')
        if (i+1)%9 == 0:
            print()

    处理以后得到,解决问题的关键,一个数独,本来我还想解解,但是这个数独对于我这种初级选手是难了点。

    所以我找了  http://shudu.gwalker.cn/  数独在线解密网站

    0 0 7 5 0 0 0 6 0
    0 2 0 0 1 0 0 0 7
    9 0 0 0 3 0 4 0 0
    2 0 1 0 0 0 0 0 0
    0 3 0 1 0 0 0 0 5
    0 0 0 0 0 0 7 1 0
    4 0 0 0 0 8 2 0 0
    0 0 5 9 0 0 0 8 0
    0 8 0 0 0 1 0 0 3

    最后整理答案

    340089102508406930016207058060875349709064820854392006093650071170023604602740590

    整理格式提交。。。

  • 相关阅读:
    Linux Apache服务(一)
    mysql基础
    linux面试题一
    linux shell(2)
    linux基础汇总2
    python列表生成式、生成器,迭代器与二分法
    python的函数
    python函数
    java 翁老师学习笔记-持续更
    责任链模式
  • 原文地址:https://www.cnblogs.com/zhaijiahui/p/7876005.html
Copyright © 2011-2022 走看看