[BUUCTF] [Reverse]不一样的flag

这篇博客详细介绍了如何解决一道名为'不一样的flag'的逆向工程题目。作者指出,尽管一些题解将它简化为迷宫问题,但实际上需要深入理解才能找出解题思路。通过反编译代码,解析关键变量,作者揭示了核心的迷宫地图和坐标系统,并解释了如何通过指针越界判断来找到正确的路径。最终,他们找到了迷宫的路径,得出flag{222441144222}作为答案。
摘要由CSDN通过智能技术生成

前言

好多题解writeup直接说这个题目是个迷宫题,说的好像一眼就能看出来似的。但是实际上不提前看答案或者研究透彻这个题目的话,根本想不出来这是个迷宫。
下面说一下我的思路吧。

题目

不一样的flag

是不是做习惯了常规的逆向题目?试试这道题,看你在能不能在程序中找到真正的flag!注意:flag并非是flag{XXX}形式,就是一个’字符串‘,考验眼力的时候到了! 注意:得到的 flag 请包上 flag{} 提交

思路

首先是反编译:

int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
{
  _BYTE v_5x5_4[29]; // [esp+17h] [ebp-35h] BYREF
  int v4; // [esp+34h] [ebp-18h]
  int input; // [esp+38h] [ebp-14h] BYREF
  int i; // [esp+3Ch] [ebp-10h]
  _BYTE v7[12]; // [esp+40h] [ebp-Ch] BYREF

  __main();
  v_5x5_4[26] = 0;
  *(_WORD *)&v_5x5_4[27] = 0;
  v4 = 0;
  strcpy(v_5x5_4, "*11110100001010000101111#");
  while ( 1 )
  {
    puts("you can choose one action to execute");
    puts("1 up");
    puts("2 down");
    puts("3 left");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值