安恒杯二月月赛 抗【疫】练习赛 -re-maze1
新手一枚,如有错误(不足)请指正,谢谢!!
<mark>个人博客:点击进入</mark>
题目下载:

链接: https://pan.baidu.com/s/197VP-ZwJ6oIMpZ7oPuBuKA 提取码: 2020

IDA64位载入,进入main()函数

迷宫题,28行之前对迷宫进行初始化,之后输入flag,然后wasd控制上下左右,最后到达终点2的时候判断成功,1是路,0是墙。

在28行下断点,linux远程调试,将迷宫数据取出

写脚本

#include <stdio.h>
int main()
{
    int i, j;
    char maze[] = {
    1,0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00,
    0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00,
    0x01, 0x00, 0x00,2
    };
    for (i = 0; i < 6; i++)
    {
        for (j = 0; j < 6; j++)
        {
            if (maze[6 * i + j] == 1)
                printf("■");
            else if (maze[6 * i + j] == 0)
                printf("□");
            else if (maze[6 * i + j] == 2)
                printf("★");
            //else if(maze)
        }
        putchar('\n');
    }
    return 0;
}


控制行和列的变量在bss段,会初始化为0,所以起点是左上角,终点是右下角
,输入为dddddsssss

转换为md5,最终flag为64e918643fc7b1d92d964543b04c117a