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
在這裏插入圖片描述

發佈了50 篇原創文章 · 獲贊 7 · 訪問量 3541
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章