不一样的flag

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

ida看伪C代码:

int __cdecl main(int argc, const char **argv, const char **envp)
{char v3; // [esp+17h] [ebp-35h]int v4; // [esp+30h] [ebp-1Ch]int v5; // [esp+34h] [ebp-18h]signed int v6; // [esp+38h] [ebp-14h]int i; // [esp+3Ch] [ebp-10h]int v8; // [esp+40h] [ebp-Ch]
__main();v4 = 0;v5 = 0;qmemcpy(&v3, _data_start__, 0x19u);while ( 1 ){puts("you can choose one action to execute");puts("1 up");puts("2 down");puts("3 left");printf("4 right\n:");scanf("%d", &v6);if ( v6 == 2 ){++v4;}else if ( v6 > 2 ){if ( v6 == 3 ){--v5;}else{if ( v6 != 4 )
LABEL_13:exit(1);++v5;}}else{if ( v6 != 1 )goto LABEL_13;--v4;}for ( i = 0; i <= 1; ++i ){if ( *(&v4 + i) < 0 || *(&v4 + i) > 4 )exit(1);}if ( *((_BYTE *)&v8 + 5 * v4 + v5 - 41) == 49 )exit(1);if ( *((_BYTE *)&v8 + 5 * v4 + v5 - 41) == 35 ){puts("\nok, the order you enter is the flag!");exit(0);}}
}

可以看到每次都将用户的输入存到v6里面,然后根据v6的值来调整v4和v5的值,输入1就让v4--   2就让v4++  3就让v5--   4就让v5++

下面这一段代码说明v4 和v5取值都必须在0~4之间:

    for ( i = 0; i <= 1; ++i ){if ( *(&v4 + i) < 0 || *(&v4 + i) > 4 )exit(1);}

关键在于这一段代码:

    if ( *((_BYTE *)&v8 + 5 * v4 + v5 - 41) == 49 )exit(1);if ( *((_BYTE *)&v8 + 5 * v4 + v5 - 41) == 35 ){

我们仔细看主函数的代码,发现v8是一直没有动过的,再仔细算一下  &v8 + 5 * v4 + v5 - 41 这个偏移量是 &v8-41 到&v8-17之间,也就是完全落在v3的25个值里面!

他的逻辑是 如果算出来&v8 + 5 * v4 + v5 - 41 这个偏移量对应的值如果是1就退出,否则继续,直到找到“#”这个值

所以这个题本质上是个走迷宫.........

纯手走的 答案是:222441144222

转载于:https://www.cnblogs.com/dyhaohaoxuexi/p/11421648.html

BUUOJ reverse 不一样的flag相关推荐

  1. BUUOJ reverse SimpleRev (爆破)

    SimpleRev SimpleRev(flag需加上flag{}再提交) 注意:得到的 flag 请包上 flag{} 提交 拖到ida 找到关键函数: unsigned __int64 Decry ...

  2. BUUOJ reverse 刮开有奖

    刮开有奖 这是一个赌博程序,快去赚钱吧!!!!!!!!!!!!!!!!!!!!!!!!!!!(在编辑框中的输入值,即为flag,提交即可) 注意:得到的 flag 请包上 flag{} 提交 拖到id ...

  3. Buuoj re [easyre|reverse1|reverse2|内涵的软件|新年快乐|xor]

    Buuoj reverse easyre reverse1 reverse2 内涵的软件 新年快乐 xor 这是我的第一次博客,是关于一些逆向题,话不多说直接开搞. easyre 使用exeinfo软 ...

  4. LeetCode 7. Reverse Integer

    问题链接 LeetCode 7 题目解析 给定一个32位有符号整数,求其反转数字. 解题思路 如果是简单反转的话,那这道题就太简单了.题目要求判断溢出问题,32位int类型的范围是-214748364 ...

  5. Leet Code OJ 7. Reverse Integer [Difficulty: Easy]

    题目: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Have ...

  6. Reverse digits of an integer

    例如 输入一个整数 x = 123, 输出321 输入一个整数: x = -123, 输出 -321 int reverse(int x) {int flag = -1;int z = x;if( x ...

  7. 【moeCTF题解-0x01】Reverse

    title: [moeCTF题解-0x01]Reverse categories: CTF moeCTF tags: CTF [moeCTF题解-0x01]Reverse 一个全新的领域 [moeCT ...

  8. [WRECKCTF 2022] crypto,reverse,pwn部分WP

    国庆两天,一个比较容易的比赛.会的题不少.感觉到自信了. 目录 国庆两天,一个比较容易的比赛.会的题不少.感觉到自信了. crypto spin baby-rsa mtp prime token rs ...

  9. BUUCTF笔记之Web系列部分WriteUp(五)

    1.[GWCTF 2019]枯燥的抽奖 查看源码得到check.php,访问得到代码: <?php #这不是抽奖程序的源代码!不许看! header("Content-Type: te ...

最新文章

  1. Transformer走下神坛?南加州大学教授:想解决常识问题,神经网络不是答案
  2. 按照文件名最后数字进行排序
  3. 外键查询_传统关系型数据库查询性能提高思路
  4. Java IO流学习总结八:Commons IO 2.5-IOUtils
  5. 数学作图工具_八十中成功举办北京市初中数学教学研讨会
  6. mysql数据库设计规范_MYSQL数据库设计规范与原则
  7. Kafka-batch.size属性
  8. 【linux笔记】vi和vim编辑器,重定向输出,系统命令,进程,管道
  9. Wattagio for Mac(电池管理) 免激活版
  10. spring教程笔记3
  11. NCBI数据上传(二):转录组测序(RNA-Seq)数据
  12. 中标麒麟运行java_中标麒麟系统上安装java、eclipse指南
  13. 蓝桥杯 平方和(JAVA)
  14. cve-2020-7066简单解析
  15. 初中计算机卡片的制作教案,《运用Word制作电子贺卡》教学设计
  16. 关于【天池精准医疗大赛——人工智能辅助糖尿病遗传风险预测】的思考
  17. linux内核snat分析,Linux2.6.29.6内核netfilter代码中SNAT的过程跟踪
  18. (万年历一)JAVA在控制台输出万年历(1900年起)
  19. 基于zynq7000与ad9361的移植与平台搭建
  20. [Unity安卓封装][C#版]Unity使用TextToSpeech

热门文章

  1. java学习(100):集合类简介
  2. 纯CSS实现锚点跳转位置上下偏移的办法
  3. jquery日期插件_AngularJS 日期时间选择组件(附详细使用方法)
  4. Python 黑帽子第二章运行截图
  5. CentOS 7配置Let’s Encrypt支持免费泛域名证书
  6. 第一次冲刺阶段(三)
  7. ajax加载vue数据,详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
  8. c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较
  9. Error:Artifact com.*******:war exploded: java.nio.file.InvalidPathException: Illeg
  10. vue使用axios并存数据到state