re学习笔记(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
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forgo7ten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值