BUUOJ reverse 不一样的flag
不一样的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相关推荐
- BUUOJ reverse SimpleRev (爆破)
SimpleRev SimpleRev(flag需加上flag{}再提交) 注意:得到的 flag 请包上 flag{} 提交 拖到ida 找到关键函数: unsigned __int64 Decry ...
- BUUOJ reverse 刮开有奖
刮开有奖 这是一个赌博程序,快去赚钱吧!!!!!!!!!!!!!!!!!!!!!!!!!!!(在编辑框中的输入值,即为flag,提交即可) 注意:得到的 flag 请包上 flag{} 提交 拖到id ...
- Buuoj re [easyre|reverse1|reverse2|内涵的软件|新年快乐|xor]
Buuoj reverse easyre reverse1 reverse2 内涵的软件 新年快乐 xor 这是我的第一次博客,是关于一些逆向题,话不多说直接开搞. easyre 使用exeinfo软 ...
- LeetCode 7. Reverse Integer
问题链接 LeetCode 7 题目解析 给定一个32位有符号整数,求其反转数字. 解题思路 如果是简单反转的话,那这道题就太简单了.题目要求判断溢出问题,32位int类型的范围是-214748364 ...
- Leet Code OJ 7. Reverse Integer [Difficulty: Easy]
题目: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Have ...
- Reverse digits of an integer
例如 输入一个整数 x = 123, 输出321 输入一个整数: x = -123, 输出 -321 int reverse(int x) {int flag = -1;int z = x;if( x ...
- 【moeCTF题解-0x01】Reverse
title: [moeCTF题解-0x01]Reverse categories: CTF moeCTF tags: CTF [moeCTF题解-0x01]Reverse 一个全新的领域 [moeCT ...
- [WRECKCTF 2022] crypto,reverse,pwn部分WP
国庆两天,一个比较容易的比赛.会的题不少.感觉到自信了. 目录 国庆两天,一个比较容易的比赛.会的题不少.感觉到自信了. crypto spin baby-rsa mtp prime token rs ...
- BUUCTF笔记之Web系列部分WriteUp(五)
1.[GWCTF 2019]枯燥的抽奖 查看源码得到check.php,访问得到代码: <?php #这不是抽奖程序的源代码!不许看! header("Content-Type: te ...
最新文章
- Transformer走下神坛?南加州大学教授:想解决常识问题,神经网络不是答案
- 按照文件名最后数字进行排序
- 外键查询_传统关系型数据库查询性能提高思路
- Java IO流学习总结八:Commons IO 2.5-IOUtils
- 数学作图工具_八十中成功举办北京市初中数学教学研讨会
- mysql数据库设计规范_MYSQL数据库设计规范与原则
- Kafka-batch.size属性
- 【linux笔记】vi和vim编辑器,重定向输出,系统命令,进程,管道
- Wattagio for Mac(电池管理) 免激活版
- spring教程笔记3
- NCBI数据上传(二):转录组测序(RNA-Seq)数据
- 中标麒麟运行java_中标麒麟系统上安装java、eclipse指南
- 蓝桥杯 平方和(JAVA)
- cve-2020-7066简单解析
- 初中计算机卡片的制作教案,《运用Word制作电子贺卡》教学设计
- 关于【天池精准医疗大赛——人工智能辅助糖尿病遗传风险预测】的思考
- linux内核snat分析,Linux2.6.29.6内核netfilter代码中SNAT的过程跟踪
- (万年历一)JAVA在控制台输出万年历(1900年起)
- 基于zynq7000与ad9361的移植与平台搭建
- [Unity安卓封装][C#版]Unity使用TextToSpeech
热门文章
- java学习(100):集合类简介
- 纯CSS实现锚点跳转位置上下偏移的办法
- jquery日期插件_AngularJS 日期时间选择组件(附详细使用方法)
- Python 黑帽子第二章运行截图
- CentOS 7配置Let’s Encrypt支持免费泛域名证书
- 第一次冲刺阶段(三)
- ajax加载vue数据,详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
- c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较
- Error:Artifact com.*******:war exploded: java.nio.file.InvalidPathException: Illeg
- vue使用axios并存数据到state