easy_Maze

从题目可得知是简单的迷宫问题

int __cdecl main(int argc, const char **argv, const char **envp)
{
__int64 v3; // rax
int v5[49]; // [rsp+0h] [rbp-270h]
int temp_data[7][7]; // [rsp+D0h] [rbp-1A0h]
_DWORD org_maze_data[7][7]; // [rsp+1A0h] [rbp-D0h] org_maze_data[0][0] = 1;
org_maze_data[0][1] = 1;
org_maze_data[0][2] = -1;
org_maze_data[0][3] = 1;
org_maze_data[0][4] = -1;
org_maze_data[0][5] = 1;
org_maze_data[0][6] = -1;
org_maze_data[1][0] = 0;
org_maze_data[1][1] = 0;
org_maze_data[1][2] = 0;
org_maze_data[1][3] = 0;
org_maze_data[1][4] = 1;
org_maze_data[1][5] = -1;
org_maze_data[1][6] = 0;
org_maze_data[2][0] = 0;
org_maze_data[2][1] = 1;
org_maze_data[2][2] = 0;
org_maze_data[2][3] = 0;
org_maze_data[2][4] = 1;
org_maze_data[2][5] = 0;
org_maze_data[2][6] = -1;
org_maze_data[3][0] = -1;
org_maze_data[3][1] = 0;
org_maze_data[3][2] = 1;
org_maze_data[3][3] = 0;
org_maze_data[3][4] = 1;
org_maze_data[3][5] = -1;
org_maze_data[3][6] = 0;
org_maze_data[4][0] = -1;
org_maze_data[4][1] = 0;
org_maze_data[4][2] = 0;
org_maze_data[4][3] = 0;
org_maze_data[4][4] = 0;
org_maze_data[4][5] = 0;
org_maze_data[4][6] = 1;
org_maze_data[5][0] = -1;
org_maze_data[5][1] = -1;
org_maze_data[5][2] = 1;
org_maze_data[5][3] = -1;
org_maze_data[5][4] = 0;
org_maze_data[5][5] = -1;
org_maze_data[5][6] = 2;
org_maze_data[6][0] = 1;
org_maze_data[6][1] = -1;
org_maze_data[6][2] = 0;
org_maze_data[6][3] = 0;
org_maze_data[6][4] = -1;
org_maze_data[6][5] = 1;
org_maze_data[6][6] = 0;
memset(temp_data, 0, 192uLL);
temp_data[6][6] = 0;
memset(v5, 0, 192uLL);
v5[48] = 0;
Step_0(org_maze_data, 7, temp_data); // 变换迷宫数据
Step_1(temp_data, 7, (int (*)[7])v5); // 变换迷宫数据
v3 = std::operator<<<std::char_traits<char>>(&_bss_start, "Please help me out!");
std::ostream::operator<<(v3, &std::endl<char,std::char_traits<char>>);
Step_2((int (*)[7])v5, 7); // 输入,验证
system("pause");
return 0;
}

迷宫经过了两次变换,我们需要动态调试dump出最终迷宫数据。

dump

关注Step_2函数

__int64 __fastcall Step_2(int (*maze_final_data)[7])
{
int index; // eax
__int64 v2; // rax
__int64 v3; // rax
__int64 result; // rax
__int64 v5; // rax
char flag[35]; // [rsp+10h] [rbp-30h]
char myinput; // [rsp+33h] [rbp-Dh]
int i; // [rsp+34h] [rbp-Ch]
int y; // [rsp+38h] [rbp-8h]
int x; // [rsp+3Ch] [rbp-4h] x = 0;
y = 0;
i = 0;
while ( i <= 29 && (*maze_final_data)[7 * x + y] == 1 )// 三十步 7*7迷宫; 走1
{
std::operator>><char,std::char_traits<char>>(&std::cin, &myinput);
index = i++;
flag[index] = myinput;
if ( myinput == 'd' )
{ // d向右
++y;
}
else if ( myinput > 'd' )
{
if ( myinput == 's' )
{
++x; // s向下
}
else
{
if ( myinput != 'w' )
goto LABEL_14;
--x; // w向上
}
}
else if ( myinput == 'a' )
{ // a向左
--y;
}
else
{
LABEL_14:
v2 = std::operator<<<std::char_traits<char>>(&_bss_start, "include illegal words.");
std::ostream::operator<<(v2, &std::endl<char,std::char_traits<char>>);
}
}
if ( x != 6 || y != 6 ) // 终点 第49个
{
v5 = std::operator<<<std::char_traits<char>>(&_bss_start, "Oh no!,Please try again~~");
std::ostream::operator<<(v5, &std::endl<char,std::char_traits<char>>);
result = 0LL;
}
else
{
v3 = std::operator<<<std::char_traits<char>>(&_bss_start, "Congratulations!");
std::ostream::operator<<(v3, &std::endl<char,std::char_traits<char>>);
output(flag, i);
result = 1LL;
}
return result;
}

可得到迷宫题的几个关键:

  • 迷宫数据
  • 起点 [0][0]
  • 终点[6][6]
  • 迷宫操作:wsad-->上下左右

最终的迷宫数据:

操作:ssddwdwdddssaasasaaassddddwdds

UNCTF{ssddwdwdddssaasasaaassddddwdds}

//------------------------------------------------------------//-----------       Created with 010 Editor        -----------//------         www.sweetscape.com/010editor/          ------//// File    : D:\Users\Desktop\¹¥·ÀÊÀ½ç\final_maze// Address : 0 (0x0)// Size    : 400 (0x190)//------------------------------------------------------------unsigned char hexData[400] = {    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,    0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,    0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,    0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };

攻防世界 reverse easy_Maze的更多相关文章

  1. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  2. 攻防世界 reverse evil

    这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...

  3. 攻防世界 reverse tt3441810

    tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...

  4. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

  5. 攻防世界 reverse Windows_Reverse2

    Windows_Reverse2   2019_DDCTF 查壳: 寻找oep-->dump-->iat修复   便可成功脱壳 int __cdecl main(int argc, con ...

  6. 攻防世界 reverse BabyXor

    BabyXor     2019_UNCTF 查壳 脱壳 dump 脱壳后 IDA静态分析 int main_0() { void *v0; // eax int v1; // ST5C_4 char ...

  7. 攻防世界 reverse parallel-comparator-200

    parallel-comparator-200 school-ctf-winter-2015 https://github.com/ctfs/write-ups-2015/tree/master/sc ...

  8. 攻防世界 reverse 进阶 8-The_Maya_Society Hack.lu-2017

    8.The_Maya_Society Hack.lu-2017 在linux下将时间调整为2012-12-21,运行即可得到flag. 下面进行分析 1 signed __int64 __fastca ...

  9. 攻防世界 reverse seven

    seven  hctf2018 这是一个驱动文件 ida载入,查找字符串 根据字符串来到函数:sub_1400012F0 __int64 __fastcall sub_1400012F0(__int6 ...

随机推荐

  1. 高阶函数 HOF & 高阶组件 HOC

    高阶函数 HOF & 高阶组件 HOC 高阶类 js HOC 高阶函数 HOF 函数作为参数 函数作为返回值 "use strict"; /** * * @author x ...

  2. npm & config settings

    npm & config settings how to check npm config settings https://docs.npmjs.com/cli/config $ npm c ...

  3. js trigger click event & dispatchEvent & svg element

    js trigger click event & dispatchEvent & svg element but svg element not support trigger cli ...

  4. NGK算力持有好处多多!SPC、VAST等免费拿!

    众所周知,NGK是分布式存储的,作为Web3.0以及数字经济时代的基础设施,为数字加密市场带来了全新的商业模式和经济业态,但是,这只是一个重要的起点,真正的价值还在后面! 为了满足NGK生态建设者强烈 ...

  5. 一文读懂网管协议 - SNMP,NETCONF,RESTCONF

    本文篇幅较长,主要涉及以下内容: 介绍传统 CLI 配置网络设备存在的挑战,网管协议出现的背景 SNMP 原理,交互过程,以及 trade-off NETCONF 架构,交互过程 RESTCONF 架 ...

  6. 数据处理_HIVE增量ETL的一种方式

    适用场景: 贴源层主表历史数据过大,ETL不涉及历史数据对比或聚合 处理流程: 1.确定一个业务主键字段或物理主键字段 2.确定一个可以判断增量数据范围的字段,这取决于具体的业务场景,一般选用记录的创 ...

  7. CentOS7安装Mysql并配置远程访问

    (su root登录到root账户) 下载repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 安装rpm ...

  8. python的基本运算符

    目录 基本运算符 1.算术运算符 2.比较运算符 3.赋值运算符 4.逻辑运算符 5.身份运算符 6.位运算符 7.成员运算符 基本运算符 1.算术运算符 运算符 描述 实例 + 加-两个对象相加 a ...

  9. pyhton的函数

    目录 一.函数引入 二.函数的定义 三.如何定义一个函数 四.定义函数的三种形式 1.空函数 2.有参函数 3.无参函数 五.函数的调用 六.函数的返回值 七.函数的参数 1.形参 1.1 位置形参 ...

  10. Android 7.0 TextView点击事件无效修复方案

    public class PostTextView extends TextView { private Handler handler = new Handler(Looper.getMainLoo ...