BUUCTF Reverse/Ultimate Minesweeper

先看文件信息,没有加壳,且为net编写的程序

运行是一个扫雷游戏,只要点错一个就会自动退出(左上角显示的是雷的数目,一共有897个雷,总共900个格子,说明就三个数是能点的)

一个小提示

既然是net程序,分析软件的话可以参考这个推荐.Net、C# 逆向反编译四大工具利器

我用的是dnSpy,这个可以看到程序的大概结构

有main函数

这个FaiurePopup和SuccessPopupj是设置窗口的

失败的窗口

比如这个失败的窗口

然后看这个函数的交叉引用啥的,右键分析一下

找到被引用的地方

分析一下这段代码,下面就是输出成功

            if (this.MineField.BombRevealed){this.stopwatch.Stop();Application.DoEvents();Thread.Sleep(1000);new FailurePopup().ShowDialog();Application.Exit();}this.RevealedCells.Add(row * MainForm.VALLOC_NODE_LIMIT + column);if (this.MineField.TotalUnrevealedEmptySquares == 0){this.stopwatch.Stop();Application.DoEvents();Thread.Sleep(1000);new SuccessPopup(this.GetKey(this.RevealedCells)).ShowDialog();Application.Exit();}

这里有个GetKey,跟进查看

这个输出的就是flag了,但是里面有随机数,这就很难办

private string GetKey(List<uint> revealedCells){revealedCells.Sort();Random random = new Random(Convert.ToInt32(revealedCells[0] << 20 | revealedCells[1] << 10 | revealedCells[2]));byte[] array = new byte[32];byte[] array2 = new byte[]{245,75,65,142,68,71,100,185,74,127,62,130,231,129,254,243,28,58,103,179,60,91,195,215,102,145,154,27,57,231,241,86};random.NextBytes(array);uint num = 0U;while ((ulong)num < (ulong)((long)array2.Length)){byte[] array3 = array2;uint num2 = num;array3[(int)num2] = (array3[(int)num2] ^ array[(int)num]);num += 1U;}return Encoding.ASCII.GetString(array2);}

然后右键编辑一下,把前面的那个if语句给注释掉


然后另存为exe文件,然后就可以愉快的玩了,。。。(当然我是开鼠标连点器搞的)

然后点开之前的原程序,照着点这三个数就行

flag出来了

flag{Ch3aters_Alw4ys_W1n@flare-on.com}

BUUCTF Reverse/Ultimate Minesweeper相关推荐

  1. BUUCTF reverse题解汇总

    本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...

  2. BUUCTF Reverse/findKey

    BUUCTF Reverse/findKey 先看文件信息:32位程序,没有加壳 打开看看,标题为find flag,也没啥有用的信息 IDA32位打开,找到start函数,看到有个main,跟随跳转 ...

  3. BUUCTF Reverse helloword、findit

    BUUCTF Reverse helloword.findit helloword findit 一天一道CTF题目,能多不能少 记录一下这两道题,这两道题是安卓逆向的题目~ 第一次接触安卓逆向的题目 ...

  4. BUUCTF Reverse xor

    题目:BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳,没壳,IDA打开 main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定f ...

  5. BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker

    BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker 先看下文件信息,没有加壳,32位程序 运行一下,又是一道字符串比较的题目 用IDA32位打开,分析一下 // positive ...

  6. BUUCTF Reverse/[GWCTF 2019]pyre

    BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...

  7. [buuctf.reverse] 第52至61题

    目录 052_findKey 053_[FlareOn5]Minesweeper Championship Registration 054_[网鼎杯 2020 青龙组]jocker 055_[GWC ...

  8. BUUCTF Reverse(helloworld)

    BUUCTF Reverse(helloworld) 题目附件下载下来之后,是.apk后缀,所以可能是安卓逆向. 这里我用的工具是Android Killer,下载地址:https://xiazai. ...

  9. BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun

    BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun 先看文件信息, IDA64位打开,很简单的题目,只要一个个输入就行 都是返回的这种元素 _BOOL8 __fastcall i ...

最新文章

  1. CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网
  2. 数据库期末复习之事务与数据恢复
  3. python函数(三)
  4. java 异常机制_深入理解Java异常处理机制
  5. EasyUI,二级页面内容的操作
  6. pytorch LSTM_regression
  7. “unzip”不是内部或外部命令,也不是可运行的程序或批处理文件
  8. 华为机试HJ60:查找组成一个偶数最接近的两个素数
  9. jmeter+接口测试练习+接口关联+Json提取
  10. fat jar包缺点_什么是fat JAR?
  11. 百度文库下载工具(所有源码)
  12. 华为rh5885服务器oid_高性能全冗余 华为RH5885 V3服务器解析
  13. linux-巴斯勒相机 GigE通信配置步骤
  14. MIPS学习笔记(1)
  15. MMCODE 1003: 小谭变美日记(c++)
  16. 如何将QQ群文件快速下载,怎么快速下载QQ中的文件,QQ群文件下载
  17. C语言结构体字节对齐规则
  18. linux安装globalsign证书,globalsign代码签名证书
  19. 信息搜集-敏感信息收集
  20. 包,内部类,常用类,集合

热门文章

  1. 计算机组成原理十六位运算器实验报告,《计算机组成原理》实验报告——运算器...
  2. 朗读评价语言集锦_(完整版)朗读评价语句
  3. 秒杀系统如何防止超卖?
  4. docker 部署BSC(币安智能链)v1.1.2版本开发网--ws协议
  5. C++11~C++20 备忘录
  6. 【2018国赛线上初赛】知识问答题真题演练第三波
  7. Unity Hub简介
  8. fmc接口定义_FMC-ADA学习笔记之DAC配置及应用
  9. 第三方IDC性能测评主要指标
  10. U盘文件后缀变成.exe怎么办?