re學習筆記(64)GKCTF2020-re-Check_1n|BabyDriver

Check_1n

第一題運行程序,提示輸入開機密碼
輸入錯誤會提示密碼錯誤,去IDA搜索字符串得到密碼HelloWord
然後開機後運行 打磚塊 程序即可得到flag

切換程序的時候用箭頭上下左右,回車啓動,

BabyDriver

搜索字符串發現有一串類似迷宮的字符串
在這裏插入圖片描述
迷宮字符串長度是225,剛開始以爲是1515的,分析了下代碼發現是1614的,,
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
可以寫程序畫出迷宮來,然後就是按鍵的問題了,,,因爲是sys文件,所以按鍵應該是鍵盤掃描碼而不是ASCII碼
在線鍵盤掃描碼查詢
下移是0x25也就是K
右移是0x26也就是L

#include <stdio.h>
unsigned char maze[225] = {
    0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
    0x6F, 0x2E, 0x2A, 0x2E, 0x2E, 0x2A, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2A, 0x2E, 0x2E, 0x2A,
    0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2E, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A, 0x2E, 0x2A, 0x2E, 0x2A, 0x2A,
    0x2A, 0x2E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A, 0x2E, 0x2A, 0x2E, 0x2A, 0x2A,
    0x2A, 0x2E, 0x2E, 0x2E, 0x2A, 0x2A, 0x2E, 0x2E, 0x2E, 0x2E, 0x2A, 0x2E, 0x2A, 0x2E, 0x2A, 0x2A,
    0x2A, 0x2A, 0x2A, 0x2E, 0x2E, 0x2A, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A, 0x2E, 0x2E, 0x2A,
    0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A,
    0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A,
    0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2E, 0x2E, 0x2E, 0x2A, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2E, 0x2A,
    0x2A, 0x2E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2A, 0x2E, 0x2E, 0x2E, 0x2E, 0x2A,
    0x2A, 0x2E, 0x2E, 0x2E, 0x2A, 0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
    0x2A, 0x2A, 0x2E, 0x2E, 0x2A, 0x2A, 0x2A, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x23, 0x2A, 0x2A,
    0x2A, 0x2A, 0x2E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
    0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
    0x00
};
int main(void)
{
    int i, j, x, y;
    for (i = 0; i < 16; i++)
    {
        for (j = 0; j < 14; j++)
        {
            switch (maze[i * 16 + j])
            {
            case 0x2a:
                printf("□");
                break;
            case '.':
                printf("■");
                break;
            case 'o':
                printf("☆");
                x = i * 16 + j;
                break;
            case '#':
                y = i * 16 + j;
                printf("★");
                break;
            }
        }
        putchar('\n');
    }
    while (x != y)
    {
        if (maze[x + 16] == '.' || maze[x + 16] == '#')
        {
            x += 16;
            putchar('K');
        }
        else if (maze[x + 1] == '.' || maze[x + 1] == '#')
        {
            x += 1;
            putchar('L');
        }
    }
    return 0;
}

在這裏插入圖片描述
然後進行md5加密,即可得到flag
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章