小白学习笔记(16)CG-CTF-re-Single

新手一枚,如有错误(不足)请指正,谢谢!!
题目链接:single

IDA64打开,找到main函数
在这里插入图片描述
这里判断出输入的字符串都为数字
在这里插入图片描述
这里对数据进行一定的处理
在这里插入图片描述
sub_400AD4()函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
emmmm不知道咋写脚本,,,看了cgctf RE Single By:xiaoyuyulala
才知道这是数独游戏……

好叭先把原来的数组打印出来
先提取原来的
在这里插入图片描述
在这里插入图片描述
然后使用数独求解器进行解密
在这里插入图片描述
在这里插入图片描述
最后是这样的字符串……
431657892695832147728491365746518923321479586589632147185374269964218753273956814
然后需要把原先数据中不是0的地方变成0
懒得手动改了……

#include <stdio.h>
int main()
{
    int shuju[81] =
    {
    0,   3,   0,   6,   0,   0,   0,   0,   0,   6,
    0,   0,   0,   3,   2,   4,   9,   0,   0,   9,
    0,   1,   0,   7,   0,   6,   0,   7,   4,   6,
    0,   0,   0,   0,   0,   0,   0,   1,   8,   0,
    0,   0,   6,   3,   0,   0,   0,   0,   0,   0,
    0,   1,   4,   7,   0,   8,   0,   9,   0,   4,
    0,   7,   0,   0,   7,   4,   2,   1,   0,   0,
    0,   6,   0,   0,   0,   0,   0,   3,   0,   1,
    0
    };
    int i,j;
    char str[] = "431695728657832491892147365746321589518479632923586147185964273374218956269753814";

    for(i=0;i<9;i++)
    {
        for(j=0;j<9;j++)
        {
            if(shuju[i*9+j]!=0)
                printf("0");
            else
                printf("%c",str[i*9+j]);
        }
    }
    return 0;
}

出来结果……
401095728057800001802040305000321589500479002923586000105060203300008950269750804
在这里插入图片描述

posted @ 2019-12-03 19:06  Palmer0801  阅读(181)  评论(0编辑  收藏  举报