首页 > 其他分享 >【Pwn】(未解决)maze - writeup

【Pwn】(未解决)maze - writeup

时间:2024-07-28 10:28:13浏览次数:10  
标签:int writeup unsigned ++ v5 v6 v7 Pwn maze

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

image

获取关键词字符串:luck

2.寻找字符串引用代码

image

3.生成伪代码

image

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

image

5.分析程序逻辑

check函数:
image

image

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' 为控制上下左右移动

image

要使map[10 * a1 + a2] == 67 为真,那得知道map数组存储值,这个就不知道了。。。

标签:int,writeup,unsigned,++,v5,v6,v7,Pwn,maze
From: https://www.cnblogs.com/vgwl/p/18327952

相关文章

  • PWN专项
    注:前面我们完成了webmisccrypto三个方向的具体学习;接下来敬请期待二进制逆向方面的学习分享;同时也是难度最大的一个方向;所以放在最后面讲解!陆续更新当中!敬请期待!以下是三个方向的总结:misc方向:一:文件操作与隐写1、文件类型的识别2、文件分离操作3、文件合并......
  • CTF-PWN 堆的相关数据结构
    文章连接: 《堆的相关数据结构》参考:1.ctf.wiki:堆相关数据结构-CTFWiki2.星盟pwn佬:0011.哔哩哔哩-【个人向】CTFpwn入门-P11[高清版]_哔哩哔哩_bilibilimalloc_chunk概念:通过malloc申请的内存称为chunk,也可以将chunk称作堆的一个单位(自己随意理解)。free......
  • DASCTF 2023 & 0X401七月暑期挑战赛【PWN】(VIPhouse篇)
    DASCTF2023&0X401七月暑期挑战赛【PWN】(VIPhouse篇)题目保护情况没有开pie保护,延迟绑定机制64位ida逆向给了一些功能函数1.loginin输入密码的时候会溢出,同时判断输入的name,和passwd同时有两个标志位,如果是admin,多一个标志位2.canary功能前提是admin才能进行输出ca......
  • DASCTF 2023 & 0X401七月暑期挑战赛【PWN】(FileEditor篇)
    DASCTF2023&0X401七月暑期挑战赛【PWN】(FileEditor篇)题目保护情况(保护全家桶)64位ida逆向模拟了一个类似vim的功能,有打开文件,打印内容,插入行,删除行,复制行,和编辑行,还有查找字符和替换字符的功能,然后就是保存退出一个一个来分析吧1.open就是打开一个file文件。没有会创建......
  • (XGCTF)西瓜杯pwn部分wp
    (XGCTF)西瓜杯pwn部分wp1.嘘嘘嘘程序保护情况没有开canary,64位ida逆向看这,陌生吧,c++写的程序,所以看起来比较奇怪分析一下,一上来向,buf和v5各写入4字节数据,如果两者之和大于32就会退出,否则答应buf+v7处,v5字节的数据,说白了就是不让溢出。继续exec函数中会判断this+8处的......
  • DASCTF 2023六月挑战赛|二进制专项 PWN (下)
    DASCTF2023六月挑战赛|二进制专项PWN(下)1.can_you_find_me检查保护意料之中64位ida逆向只有add,和del功能不能show先看add吧最多申请10个堆块存在off_by_null漏洞,可以考虑unlink来进行堆块重叠del函数就没有UAF漏洞了1.首先想办法泄露出libc地址,因为本题libc是2.27......
  • DASCTF 2023六月挑战赛|二进制专项 PWN (上)
    DASCTF2023六月挑战赛|二进制专项PWN(上)1.easynoteedit函数对长度没有检查free函数存在UAF漏洞思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使用fastbinattack,把__malloc_hook,写入one_gadget2.通过unlink修改freegot表为systemexp:frompwnimport*context(log_lev......
  • DASCTF 2023六月挑战赛|二进制专项 PWN (上)
    DASCTF2023六月挑战赛|二进制专项PWN(上)1.easynoteedit函数对长度没有检查free函数存在UAF漏洞思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使用fastbinattack,把__malloc_hook,写入one_gadget2.通过unlink修改freegot表为systemexp:frompwnimport*context(lo......
  • 【Loading 4/75】Web_SQLi-Labs_WriteUp
    Less-1_GET-Errorbased-Singlequotes-String题目分析根据标题“GET-Errorbased-Singlequotes-String(基于错误的GET单引号字符型注入)”可以猜到本题的闭合方法为单引号闭合,但保险起见咱还是走一遍流程。根据页面给出的提示信息“PleaseinputtheIDasparameterwith......
  • [buuctf pwn]rip
    先checksec一下,64位,没开栈溢出保护进ida看一下,有个gets,s是15个字符然后还有另一个fun()函数现在我们就可以利用栈溢出用15个字符先填满函数缓冲区,然后用8个字符(64位)填满缓冲区下面的rbp区域,再下面就是返回地址了,我们把它填成system命令的地址0x40118AEXP如下frompwnim......