1.运行函数,收集字符串

获取关键词字符串:luck

2.寻找字符串引用代码

3.生成伪代码

4.获得main函数的C语言代码

5.分析程序逻辑

check函数:

main函数

int __fastcall main(int argc, const char **argv, const char **envp)

{

  unsigned int v3; // edx

  char v5; // [rsp+23h] [rbp-Dh]

  unsigned int v6; // [rsp+28h] [rbp-8h]

  unsigned int v7; // [rsp+2Ch] [rbp-4h]

  _main(argc, argv, envp);

  puts("Welcome to the maze. You need to find the exit, which is at point C. Your current position is marked as @.");

  puts("flag{\"The shortest route\"},good luck!!");

  v7 = 14;

  v6 = 0;

  while ( (unsigned int)check(v7, v6) != 1 )

  {

    while ( 1 )

    {

      v5 = getchar();

      if ( v5 == 108 )

        break;

      if ( v5 > 108 )

      {

        if ( v5 == 115 )

        {

          ++v7;

          goto LABEL_15;

        }

        if ( v5 == 121 )

        {

          --v7;

          goto LABEL_15;

        }

      }

      else if ( v5 == 99 )

      {

        ++v6;

        goto LABEL_15;

      }

    }

    --v6;

LABEL_15:

    if ( (unsigned int)check_1(v7, v6) )

    {

      puts("you've hit a wall!!bro@!");

      if ( v5 == 108 )

      {

        ++v6;

      }

      else if ( v5 > 108 )

      {

        if ( v5 == 115 )

        {

          --v7;

        }

        else if ( v5 == 121 )

        {

          ++v7;

        }

      }

      else if ( v5 == 99 )

      {

        --v6;

      }

    }

    else

    {

      puts("You are one step closer to victory!!");

      v3 = idx++;

      str[v3] = v5;

    }

  }

  puts("you are win!!");

  sleep(60LL);

  return 0;

}

发现 ‘s' 'l' 'y ' 'c' 为控制上下左右移动

要使map[10 * a1 + a2] == 67 为真

提取map数组数据,获取得到地图



替换方便查看



观察发现 0属于路,1属于墙

由于当check(v7,v6) !=1时跳出循环,游戏胜利,所以需要设法构建使得check函数返回1

由check函数分析得出,67为迷宫出口



由此可得67为出口,64为起点





由以上算法可得 c为向右 y向上 s向下 l向左

故路径为cyyyyyyyyyccccssscccssssssc

不过这里应该有个什么脚本可以可以。(BFS //不过我还没学过hhh)

【Pwn】maze - writrup的更多相关文章

  1. 【pwn】学pwn日记——栈学习(持续更新)

    [pwn]学pwn日记--栈学习(持续更新) 前言 从8.2开始系统性学习pwn,在此之前,学习了部分汇编指令以及32位c语言程序的堆栈图及函数调用. 学习视频链接:XMCVE 2020 CTF Pw ...

  2. 【pwn】DASCTF Sept 九月赛

    [pwn]DASCTF Sept 月赛 1.hehepwn 先查看保护,栈可执行,想到shellcode 这题需要注意shellcode的写法 拖入ida中分析 一直以为iso scanf不能栈溢出, ...

  3. 【pwn】V&N2020 公开赛 simpleHeap

    [pwn]V&N2020 公开赛 simpleHeap 1.静态分析 首先libc版本是ubuntu16的2.23版本,可以去buu的资源处下载 然后checksec一下,保护全开 拖入IDA ...

  4. 【pwn】学pwn日记(堆结构学习)

    [pwn]学pwn日记(堆结构学习) 1.什么是堆? 堆是下图中绿色的部分,而它上面的橙色部分则是堆管理器 我们都知道栈的从高内存向低内存扩展的,而堆是相反的,它是由低内存向高内存扩展的 堆管理器的作 ...

  5. 【pwn】攻防世界 pwn新手区wp

    [pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...

  6. 【PWN】初见BROP

    前言|与BROP的相遇 第一次BROP,它让我觉得pwn,或者说网安很妙,也很折磨 在遇到它之前,之前接触的题目都是简单的栈溢出,感觉没有啥有趣的,很简单,找gadget溢出就可以,一切都看得见 可遇 ...

  7. 【hdu4035】Maze

    Portal --> hdu4035 Solution 讲道理不是很懂为啥概d那么喜欢走迷宫qwq (推式子推的很爽的一题?) 首先大力dp列式子 用\(f[i]\)表示从\(i\)到离开的期望 ...

  8. 【CF123E】Maze

    Portal --> cf123E Solution 首先步数的话可以转化成每条边经过了几次这样来算 假设现在确定了起点\(S\)和终点\(T\),我们将\(T\)看成树根,那么考虑边\((u, ...

  9. 【XSY2525】Maze 2017多校

    Description 考虑一个 N×M 的网格,每个网格要么是空的,要么是障碍物.整个网格四周都是墙壁(即第1行和第n行,第1列和第m列都是墙壁),墙壁有且仅有两处开口,分别代表起点和终点.起点总是 ...

  10. 【南京邮电】maze 迷宫解法

    [南京邮电]maze 迷宫解法 题目来源:南京邮电大学网络攻防训练平台. 题目下载地址:https://pan.baidu.com/s/1i5gLzIt (密码rijss) 0x0 初步分析 题目中给 ...

随机推荐

  1. C# DataGridView控件用法大全

    动态添加新行 //方法一: int index = this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[0].Val ...

  2. Known框架实战演练——进销存框架搭建

    本文介绍如何使用Known开发框架搭建进销存管理系统的项目结构,以及开发前的一些配置和基础代码. 项目代码:JxcLite 开源地址: https://gitee.com/known/JxcLite ...

  3. 最佳 AI 翻译工作流:全世界最信达雅的翻译

    吴恩达老师提出了一种反思翻译的大语言模型 (LLM) AI 翻译工作流程--GitHub - andrewyng/translation-agent,具体工作流程如下: 提示一个 LLM 将文本从 s ...

  4. OpenGL book note

    OpenGL Shading language 4.0vertex shader geometry shader: 格式解释 https://blog.csdn.net/hankern/article ...

  5. 助动词&情态动词

    助动词 (auxiliary verbs) 任何整句都分为主语和谓语,而谓语部分的核心是谓语动词, 但是谓语动词本身往往无法独立表达某些语法概念,需要其他词的辅助, 而这类来辅助构成谓语但自己本身不能 ...

  6. Jmeter函数助手31-changeCase

    changeCase函数用于字符转换大小写. 字符串修改:填入需要转换的字符 更改案例模式UPPER(默认),LOWER,CAPITALIZE:不填默认UPPER,UPPER全部转换为大写,LOWER ...

  7. 【Vue】Re10 Webpack 第二部分(Loader)

    一.Loader解决的问题: Loader解决的问题是让webpack能够打包其他类型的文件 例如CSS.IMG等非JavaScript脚本文件 在后面我们使用Vue组件文件时也需要VueLoader ...

  8. 【Vue】07 Webpack Part3 Loader

    Loader是Webpack的核心概念: 除了JS文件以外我们还有CSS,图片,包括一些ES6规范的代码 或者是TypeScript各种前端类型的文件 但是最终必须统一转换成JS文件,Webpack本 ...

  9. 【Vue】Re06 组件化

    将一个应用页面拆分成若干个可重复使用的组件 一.Vue的组件的使用步骤: 1.创建组件构造器 2.注册组件 3.使用组件 <!DOCTYPE html> <html lang=&qu ...

  10. application.properties配置文件存储参数

    配置文件存储参数 当我们需要很多的参数时,项目很大,文件很多,每涉及一个技术,每涉及一个第三方的参数时,当这些参数数据发生变化,修改会相当的麻烦.这时候把参数配置到application.proper ...