测试文件:https://buuoj.cn/files/91b89e765c9aff8e82690c0868975b37/0bf39b5d-5f2f-4095-a921-fb5c20f53f21.zip?token=eyJ0ZWFtX2lkIjpudWxsLCJ1c2VyX2lkIjoxOTAzLCJmaWxlX2lkIjoxNDl9.XXmYkQ.5edzFDlCw_3UHmzs0yvtlqN2pqk

1.准备

获取信息

  1. 32位文件

2.IDA打开

将main函数反编译为C语言代码

  1. int __cdecl main(int argc, const char **argv, const char **envp)
  2. {
  3. char v3; // [esp+17h] [ebp-35h]
  4. int v4; // [esp+30h] [ebp-1Ch]
  5. int v5; // [esp+34h] [ebp-18h]
  6. signed int v6; // [esp+38h] [ebp-14h]
  7. int i; // [esp+3Ch] [ebp-10h]
  8. int v8; // [esp+40h] [ebp-Ch]
  9.  
  10. __main();
  11. v4 = ;
  12. v5 = ;
  13. qmemcpy(&v3, _data_start__, 0x19u);
  14. while ( )
  15. {
  16. puts("you can choose one action to execute");
  17. puts("1 up");
  18. puts("2 down");
  19. puts("3 left");
  20. printf("4 right\n:");
  21. scanf("%d", &v6);
  22. if ( v6 == )
  23. {
  24. ++v4;
  25. }
  26. else if ( v6 > )
  27. {
  28. if ( v6 == )
  29. {
  30. --v5;
  31. }
  32. else
  33. {
  34. if ( v6 != )
  35. LABEL_13:
  36. exit();
  37. ++v5;
  38. }
  39. }
  40. else
  41. {
  42. if ( v6 != )
  43. goto LABEL_13;
  44. --v4;
  45. }
  46. for ( i = ; i <= ; ++i )
  47. {
  48. if ( *(&v4 + i) < || *(&v4 + i) > )
  49. exit();
  50. }
  51. if ( *((_BYTE *)&v8 + * v4 + v5 - ) == '' )
  52. exit();
  53. if ( *((_BYTE *)&v8 + * v4 + v5 - ) == '#' )
  54. {
  55. puts("\nok, the order you enter is the flag!");
  56. exit();
  57. }
  58. }
  59. }

3.代码分析

查看第13行代码中的_data_start__

  1. .data: __data_start__ db '*11110100001010000101111#',

又通过第16~20行代码,第51~53行代码,我们能够知道这是一个迷宫题。

通过第51行5 * v4,这是一个5行5列的迷宫(一共25个字符)

  1. *
  2.  
  3. #

从*走到#即可

4.get flag!

flag{222441144222}

BUUCTF--不一样的flag的更多相关文章

  1. BUUCTF 不一样的flag writeup

    感谢BUUCTF提供的学习平台 https://buuoj.cn 题目:不一样的flag 工具:x64dbg 这是一道内存的迷宫题,迷宫是402000处的字符串 根据经验,这应该(a行*b列)的字符, ...

  2. Buuctf | BUU LFI COURSE 1

    跟着赵师傅学CTF,这里是我的学习记录 ?file=/flag ?file=/var/log/nginx/access.log :包含ngnix的日志记录 在user-agent里面插入 :bbbbb ...

  3. [BUUCTF]REVERSE——不一样的flag

    不一样的flag 附件 步骤 例行查壳儿,32位程序,无壳儿 32位ida载入,shift+f12检索程序里的字符串,看到了如图标记的字符串,加上下面又上下左右的选项,估计是道迷宫类型的题目 将迷宫字 ...

  4. BUUCTF 部分wp

    目录 Buuctf crypto 0x01传感器 提示是曼联,猜测为曼彻斯特密码 wp:https://www.xmsec.cc/manchester-encode/ cipher: 55555555 ...

  5. buuctf misc 刷题记录

    1.金三胖 将gif分离出来. 2.N种方法解决 一个exe文件,果然打不开,在kali里分析一下:file KEY.exe,ascii text,先txt再说,base64 图片. 3.大白 crc ...

  6. BUUCTF知识记录

    [强网杯 2019]随便注 先尝试普通的注入 发现注入成功了,接下来走流程的时候碰到了问题 发现过滤了select和where这个两个最重要的查询语句,不过其他的过滤很奇怪,为什么要过滤update, ...

  7. buuctf misc wp 01

    buuctf misc wp 01 1.金三胖 2.二维码 3.N种方法解决 4.大白 5.基础破解 6.你竟然赶我走 1.金三胖 root@kali:~/下载/CTF题目# unzip 77edf3 ...

  8. buuctf misc wp 02

    buuctf misc wp 02 7.LSB 8.乌镇峰会种图 9.rar 10.qr 11.ningen 12.文件中的秘密 13.wireshark 14.镜子里面的世界 15.小明的保险箱 1 ...

  9. BUUCTF WEB-WP(3)

    BUUCTF WEB 几道web做题的记录 [ACTF2020 新生赛]Exec 知识点:exec命令执行 这题最早是在一个叫中学生CTF平台上看到的类似,比这题稍微要复杂一些,多了一些限制(看看大佬 ...

  10. BUUCTF Crypto_WP(2)

    BUUCTF Crypto WP 几道密码学wp [GXYCTF2019]CheckIn 知识点:Base64,rot47 下载文件后,发现一个txt文件,打开发现一串base64,界面之后出现一串乱 ...

随机推荐

  1. ASPOSE的示例下载地址

    ftp://112.124.7.170/ASPOSE/Aspose.Words_16.3.0.zip http://blog.163.com/haolongqin@126/blog/static/10 ...

  2. php函数漏洞

    1.ereg — 正则表达式匹配 此函数遇 %00 截断. <?php $a = $_GET['pwd']; var_dump(ereg ("^[0-9]+$", $a)); ...

  3. cx_Oracle python模块安装

    1. 需要从oracle网站下载一下两个包 instantclient-basic-linux.x64-11.2.0.4.0.zip instantclient-sdk-linux.x64-11.2. ...

  4. python高级:垃圾回收机制

    ---恢复内容开始--- 垃圾回收机制 1.计数引用机制 就是一个变量.数据结构.对象当没有人引用时,python的会启用垃圾回收机制,将其从内存中删除. 怎么看引用的次数呢?sys模块提供的sys. ...

  5. 【leetcode】1073. Adding Two Negabinary Numbers

    题目如下: Given two numbers arr1 and arr2 in base -2, return the result of adding them together. Each nu ...

  6. simulate 中的一些操作

    1. neutralize: position based 的alpha int neutralize(int di, int ti) { ; ; ; ; ii < nsyms; ++ii) { ...

  7. [super class]和[self class]

    参考: https://www.jianshu.com/p/3f2bcc588b44?utm_campaign=hugo&utm_medium=reader_share&utm_con ...

  8. 关于Reporting Services网站

    1.http://www.c-sharpcorner.com/search/sql%20server%20reporting%20services 2.https://msdn.microsoft.c ...

  9. js点击获取—通过JS获取图片的相对坐标位置

    一.通过JS获取鼠标点击时图片的相对坐标位置 源代码如下所示: <!DOCTYPE html> <html lang="en"> <head> ...

  10. 28 August

    单调队列复习. 投资 (invest) 给定一带符号整数数列,求长度为 \([s, e]\) 的子区间的和的最大值.(最大子段和) 降二维为一维,for循环枚举区间右端点.预处理前缀和,问题转化为找到 ...