BUUCTF——刮开有奖

打开程序:
 就一个这个玩意儿,没有输入框,没有啥的,打开IDA反编译一下:

直接找到WinMain,发现里面只有一个对话框API(如果只有一个对话框,那真就没有输入框了),CallBack函数是DialogFunc
进入DialogFunc

有个GetDlgItemText,我实在没搞懂,明明没有用MFC画出对话框,为什么要来一个GetDlgItemText获取输入框内容,并传给了edit_string。还调用了MessageBox(感觉没必要)

也就是这一题几乎和Win32没关系,就是纯密码题

这里有几个比较坑的点,sub_4010F0这个函数的第一个参数是地址,但是我们追进去发现IDA对类型判断有误

所以要手动将int a1改成 int* a1

也包括后来的sub_401000

 很明显这里不可能传的是整形,不然计算后面偏移就没有意义
所以也要手动改成char* a1

这个函数应该是对v7~v16这一块内存进行加密,直接把这一段函数扒下来,放到电脑跑 

int sub_4010F0(int* a1,int a2,int a3)
{
	int i = 0;
	int v5 = 0;
	int v6 = 0;
	int result = 0;

	result = a3;
	
    for (i = a2; i <= a3; a2 = i)
    {
        v5 = i;
        v6 = a1[i];
        if (a2 < result && i < result)
        {
            do
            {
                if (v6 > a1[result])
                {
                    if (i >= result)
                        break;
                    ++i;
                    a1[v5] = a1[result];
                    if (i >= result)
                        break;
                    while (a1[i] <= v6)
                    {
                        if (++i >= result)
                            goto LABEL_13;
                    }
                    if (i >= result)
                        break;
                    v5 = i;
                    a1[result] = a1[i];
                }
                --result;
            } while (i < result);
        }
    LABEL_13:
        a1[result] = v6;
        sub_4010F0(a1, a2, i - 1);
        result = a3;
        ++i;
    }
    return result;
}

至此,v7开始的数组加密已经全部被我们知道

接下来是sub_4010F0,跟进去发现

 有字符表,基本上就是base64加密了,打开在线网站直接解密
ak1w->jMp
V1Ax->WP1

按照这个解密,v7[0],v10,v8,v16,v4,v5都知道了
解密后flag为   UJWP1jMp        即flag{UJWP1jMp}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/132167.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch从零开始实战09

Pytorch从零开始实战——YOLOv5-Backbone模块实现 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——YOLOv5-Backbone模块实现环境准备数据集模型选择开始训练可视化模型预测总结 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.…

养老院信息展示预约小程序的效果如何

老龄化速度加快及快节奏时代&#xff0c;银发群体的老年生活&#xff0c;儿女往往难以照顾&#xff0c;养老院成为不少家庭或个人的选择&#xff0c;靠谱机构往往能带给老人丰富多彩的生活。 而在高需求的同时&#xff0c;无论对需求者还是养老院本身都存在一定难题&#xff1…

Leetcode-101 对称二叉树

递归&#xff1a;主要思想&#xff1a;对称二叉树是左子树的左孩子右子树的右孩子&#xff0c;左子树的右孩子右子树的左孩子&#xff0c;递归实现思路较为清晰 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* Tr…

为什么要做MBTI职业性格测试?

MBTI职业性格测试是一种成熟的人格测评工具&#xff0c;基于荣格理论发展而来&#xff0c;将人的性格分为16种类型&#xff0c;或内向。或外向&#xff0c;或注重情感&#xff0c;或注重感知。 每种性格各有长处和不足&#xff0c;通过应用mbti职业性格测试&#xff0c;可以方…

字节和美团软件测试面试1000问(含文档)

一、Linux系统应用和环境配置 1、Linux系统的操作命令给我说10个&#xff0c;一般用什么工具远程连接Linux服务器&#xff1f; 2、Linux中的日志存储在哪里&#xff1f;怎么查看日志内容&#xff1f; 3、Linux中top和ps命令的区别&#xff1f; 4、Linux命令运行的结果如何写…

synchronized的原理和Callable接口

目录 ♫synchronized原理 ♪锁升级 ♪锁优化 ♫Callable接口 ♫synchronized原理 我们知道synchronized锁可以控制多个线程对共享资源的访问&#xff0c;两个线程针对同一变量访问就会产生阻塞等待。而synchronized锁并不是一成不变的&#xff0c;它会根据情况进行一次升级。…

自动化测试系列 —— UI自动化测试

UI 测试是一种测试类型&#xff0c;也称为用户界面测试&#xff0c;通过该测试&#xff0c;我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的 BUG。了解用户将如何在用户和网站之间进行交互以执行 UI 测试至关重要&#xff0c;通过执行 UI 测试…

自适应AI chatGPT智能聊天创作官网html源码/最新AI创作系统/ChatGPT商业版网站源码

源码简介&#xff1a; 自适应AI chatGPT智能聊天创作官网html源码&#xff0c;这是最新AI创作系统&#xff0c;作为ChatGPT商业版网站源码&#xff0c;它是支持创作、编写、翻译、写代码等。是一个智能聊天系统项目源码。 注意&#xff1a;这个只是网站html源码&#xff0c;要…

8年经验之谈 —— 如何用 JMeter 编写性能测试脚本?

Apache JMeter 应该是应用最广泛的性能测试工具。怎么用 JMeter 编写性能测试脚本&#xff1f; 1. 编写 HTTP 性能测试脚本 STEP 1. 添加 HTTP 请求 img STEP 2. 了解配置信息 HTTP 请求各项信息说明&#xff08;以 JMeter 5.1 为例&#xff09;。 如下图所示&#xff1a;…

第三章《补基础:不怕学不懂概率统计》笔记

3.1 什么是概率 概率亦称“或然率”&#xff0c;它反映随机事件出现的可能性大小&#xff0c;在现实生活中有着极其普遍的应用。 3.1.1 最简单的概率的例子 3.1.2 概率论与数理统计的关系 概率论与数理统计的关系可以概括为&#xff0c;概率论是数理统计的理论基础&#xf…

VSCode + PlatformIO ESP32开发环境配置(离线版5分钟搞定)

文章目录 安装python1. 打开应用商店2. 应用商店搜索python3. 安装python4. python安装完成5. 打开命令提示符6. 验证安装结果7. 更新pip源为国内源 安装VSCode下载VSCode安装Vscode安装简体中文插件安装VSCode platformio插件安装Prettier - Code formatter插件 &#xff08;建…

图书销售数据大屏可视化【可视化项目案例-03】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

【C++那些事儿】类与对象(2)

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;我之前看过一套书叫做《明朝那些事儿》&#xff0c;把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言&#xff0c;无疑是抽象且难度颇…

合同审查---财务条款、合同形式与生效审查

1.合同主体 1人 廖 2.财务条款、合同形式与生效 1人 黄 3.履行、验收、知识产权、不可抗力 1人 詹 4.违约责任、争议解决、保密、法律引用 1人 王 代码规范&#xff1a; 1.代码函数的层级 各审查点在json中分为3级层级&#xff0c;但用python写规则的时候&#xff0c;1级层级为…

2023年成为优秀自动化测试工程师的 7 个步骤!

“测试自动化测试工程师可以将你从充满代码的世界中拯救出来。”企业完全同意这一说法&#xff0c;这就是您在自动化测试行业中看到大量就业机会的原因。我在 Quora 上收到了很多与自动化测试中的职业选择相关的答案请求&#xff0c;以及人们如何在有或没有手动测试经验的情况下…

JVM源码剖析之软、弱、虚引用的处理细节

目录 写在前面&#xff1a; 源码剖析&#xff1a; Java层面&#xff1a; JVM层面&#xff1a; 使用危险点&#xff1a; 总结&#xff1a; 版本信息&#xff1a; jdk版本&#xff1a;jdk8u40 垃圾回收器&#xff1a;Serial new/old 写在前面&#xff1a; 不同的垃圾回收…

第23章(下)_索引原理剖析

文章目录 索引实现索引存储B树为什么 MySQL InnoDB 选择 B 树作为索引的数据结构&#xff1f;B 树层高问题关于自增id最左匹配原则覆盖索引索引下推innodb体系结构Buffer poolchange buffer 总结 索引实现 索引存储 innodb 由段、区、页组成。段分为数据段、索引段、回滚段等…

摊位展示预约小程序的作用有哪些

无论市场还是街边&#xff0c;小摊小贩往往很多&#xff0c;组成了丰富多彩的线下购物环境&#xff0c;而在实际发展中&#xff0c;摊位的需求度很高&#xff0c;但由于种种原因&#xff0c;导致在实际发展中&#xff0c;也有一定难题&#xff1a; 1、摊位预约难、信息查看难 …

js 求数组中的对象某个属性和

可以直接看下效果 代码&#xff1a; <script>let list [{num: 1,price: 10,},{num: 2,price: 10,},{num: 3,price: 10,},{num: 4,price: 10,},]// for循环 求总数和 num的和let num 0for (let i 0; i < list.length; i) {num list[i].num}console.log(第一种&am…

pytorch代码实现注意力机制之Flatten Attention

Flatten Attention 介绍&#xff1a;最新注意力Flatten Attention&#xff1a;聚焦的线性注意力机制构建视觉 Transformer 在将 Transformer 模型应用于视觉任务时&#xff0c;自注意力机制 (Self-Attention) 的计算复杂度随序列长度的大小呈二次方关系&#xff0c;给视觉任务…
最新文章