攻防世界——re2-cpp-is-awesome

64位
我先用虚拟机跑了一下这个程序,结果输出一串字符串+flag ——没用

IDA打开后 F5也没有什么可看的
那我们就F12查看字符串找可疑信息

这里一下就看见了

__int64 __fastcall main(int a1, char **a2, char **a3)
{char *v3; // rbx__int64 v4; // rax__int64 v5; // rdx__int64 v6; // rax__int64 v7; // rdx_BYTE *v8; // rax__int64 v10[2]; // [rsp+10h] [rbp-60h] BYREFchar v11[47]; // [rsp+20h] [rbp-50h] BYREFchar v12; // [rsp+4Fh] [rbp-21h] BYREF__int64 v13; // [rsp+50h] [rbp-20h] BYREFint v14; // [rsp+5Ch] [rbp-14h]if ( a1 != 2 ){v3 = *a2;v4 = std::operator<<<std::char_traits<char>>(&std::cout, "Usage: ", a3);v6 = std::operator<<<std::char_traits<char>>(v4, v3, v5);std::operator<<<std::char_traits<char>>(v6, " flag\n", v7);exit(0);}std::allocator<char>::allocator(&v12, a2, a3);std::string::basic_string(v11, a2[1], &v12);std::allocator<char>::~allocator(&v12);v14 = 0;v10[0] = std::string::begin(v11);while ( 1 ){v13 = std::string::end(v11);if ( !(unsigned __int8)sub_400D3D(v10, &v13) )break;v8 = (_BYTE *)sub_400D9A(v10);if ( *v8 != off_6020A0[dword_6020C0[v14]] )sub_400B56();++v14;sub_400D7A(v10);}sub_400B73();std::string::~string(v11);return 0LL;
}

这个就是我们运行程序得到的东西

正常来说
这个while(1)和if里面比较关键——经验之谈,你们也可以联想一下写过的
先看第一个sub
bool __fastcall sub_400D3D(__int64 a1, __int64 a2)
{__int64 v2; // rbxv2 = *(_QWORD *)sub_400DAC(a1);return v2 != *(_QWORD *)sub_400DAC(a2);
}
__int64 __fastcall sub_400DAC(__int64 a1)
{return a1;
}
...就是一个比较函数

按N改名
__int64 __fastcall sub_400D9A(__int64 a1)
{return *(_QWORD *)a1;
}
第二个函数,就是一个复制,姑且叫他get吧
_QWORD *__fastcall sub_400D7A(_QWORD *a1)
{++*a1;return a1;
}
最后这个也是一个简单的++操作

最后就是这样了
关键的关键就是if

off就是我们之前找到的那个字符串

dword就是一串数据
我们先脚本走下
a=[36, 0, 0, 0, 0, 0, 0, 0, 5, 0,0, 0, 54, 0, 0, 0, 101, 0, 0, 0,7, 0, 0, 0, 39, 0, 0, 0, 38, 0,0, 0, 45, 0, 0, 0, 1, 0, 0, 0,3, 0, 0, 0, 0, 0, 0, 0, 13, 0,0, 0, 86, 0, 0, 0, 1, 0, 0, 0,3, 0, 0, 0, 101, 0, 0, 0, 3, 0,0, 0, 45, 0, 0, 0, 22, 0, 0, 0,2, 0, 0, 0, 21, 0, 0, 0, 3, 0,0, 0, 101, 0, 0, 0, 0, 0, 0, 0,41, 0, 0, 0, 68, 0, 0, 0, 68, 0,0, 0, 1, 0, 0, 0, 68, 0, 0, 0,43, 0, 0, 0]
b=[]
for i in range(0,len(a),4):b.append(a[i])
print(b)
a='L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t'
flag=''
for i in b:flag+=a[i]
print(flag)

结果就出来了
相关文章:
攻防世界——re2-cpp-is-awesome
64位 我先用虚拟机跑了一下这个程序,结果输出一串字符串flag ——没用 IDA打开后 F5也没有什么可看的 那我们就F12查看字符串找可疑信息 这里一下就看见了 __int64 __fastcall main(int a1, char **a2, char **a3) {char *v3; // rbx__int64 v4; // rax__int64 v…...
问山海——天涯海角——桃花渊boss攻击顺序
文章目录 桃花渊代码代码解读代码执行结果攻击顺序示意图 桃花渊 规划击杀各个boss顺序。 副本持续时间为30分钟,每个地方的boss被打死后,需要一定时间才能重新刷新。 只考虑其中两种boss,龟将和龟龙。各有四个。 其中我从一个boss地点到…...
springboot181基于springboot的乐享田园系统
简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...
Dubbo集成Zookeeper embbed模式
为了简化应用支持服务方便的分合,使用Zookeeper embbed模式。集成Zookeeper比较容易,使用starter或自己写代码都可以。但是由于集成了Dubbo,每次启动时都会发现zookeeper没有启动就开始报错退出,但是确是已经集成了。 于是只能翻…...
156基于Matlab的光纤陀螺随机噪声和信号
基于Matlab的光纤陀螺随机噪声和信号,利用固定步长和可调步长的LMS自适应滤波、最小二乘法、滑动均值三种方法进行降噪处理,最后用阿兰方差评价降噪效果。程序已调通,可直接运行。 156 信号处理 自适应滤波 降噪效果评估 (xiaohongshu.com)...
秋招上岸大厂,分享一下经验
文章目录 秋招过程学习过程项目经验简历经验面试经验offer选择总结 秋招过程 今天是除夕,秋招已经正式结束了,等春节过完就到了春招的时间点了。 运气比较好,能在秋招的末尾进入一家大厂,拿到20k的sp offer。 从九月份十月份就开…...
使用 C++23 从零实现 RISC-V 模拟器
👉🏻 文章汇总「从零实现模拟器、操作系统、数据库、编译器…」:https://okaitserrj.feishu.cn/docx/R4tCdkEbsoFGnuxbho4cgW2Yntc 使用 C23 从零实现 RISC-V 模拟器 使用 C23 从零实现的 RISC-V 模拟器,最终的模拟器可以运行 x…...
Hugging Face 刚刚推出了一款开源的 AI 助手制造工具,直接向 OpenAI 的定制 GPT 挑战
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
powershell 雅地关闭UDP监听器
在PowerShell中优雅地关闭UDP监听器意味着你需要一种机制来安全地停止正在运行的UdpClient实例。由于UdpClient类本身没有提供直接的停止或关闭方法,你需要通过其他方式来实现这一点。通常,这涉及到在监听循环中添加一个检查点,以便在接收到停…...
Google Cloud 2024 年报告重点介绍了关键的网络威胁和防御
Google Cloud 的 2024 年威胁范围报告预测了云安全的主要风险,并提出了加强防御的策略。 该报告由 Google 安全专家撰写,为寻求预测和应对不断变化的网络安全威胁的云客户提供了宝贵的资源。 该报告强调,凭证滥用、加密货币挖矿、勒索软件和…...
【算法题】102. 二叉树的层序遍历
题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2:…...
【龙年大礼】| 2023中国开源年度报告!
【中国开源年度报告】由开源社从 2015 年发起,是国内首个结合多个开源社区、高校、媒体、风投、企业与个人,以纯志愿、非营利的理念和开源社区协作的模式,携手共创完成的开源研究报告。后来由于一些因素暂停,在 2018 年重启了这个…...
本地搭建three.js官方文档
因为three.js官网文档是国外的网站,所以你没有魔法的情况下打开会很慢,这时我们需要在本地搭建一个官方文档便于我们学习查看。 第一步:首先我们先访问GitHub地址 GitHub - mrdoob/three.js: JavaScript 3D Library. 下载不下来的小伙伴们私…...
【seata自动化治愈数据库问题解决方案】
wu-database-lazy-seata-cure-plus-starter 描述 针对saas 数据库隔离情况下,每次版本迭代都需要重新修改对应的数据库,对于升级与运维存在一定的难度,那么这个数据库治愈框架来了,使用场景如下 1.数据库不存在自动创建数据库 …...
Node.js之npm单独与批量升级依赖包的方式
Node.js之npm单独与批量升级依赖包的方式 文章目录 Node.js之npm单独与批量升级依赖包的方式npm查看与升级依赖包1. 单独安装或升级最新版本2. 查看依赖但不升级1. npm outdated2. npm update 3. 批量升级新版本4. npm-check-updates1. 全局安装2. ncu查看可升级的版本3. 升级依…...
66.加一
66. 加一 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入ÿ…...
UI自动化之Poco常用断言方式
实际上用到的几种写断言的方式: 1.验证UI界面(断言图片是否存在,UI页面不稳定情况下,图片识别效率不高) assert_exists assert_not_exists 2.验证数值(断言传入的两个值(数字或者string)是否相等ÿ…...
c语言_实现类class的功能 实例
c语言_实现类class的功能 实例 1.需求与背景2.实例1.类的头文件 class_A.h2.类的实现 class_A.c3.引用4.编译与运行 3.总结 1.需求与背景 使用C , python语言久了, 发现 类 class写代码逻辑更方便, 简洁. 封装的API更加易用; 内核代码中, 也经常看到类似类的封装. 自己尝试实现…...
[2024]常用的pip指令
[2024]常用的pip指令 HI,这里是肆十二,好久不见,大家! 新年好! pip是Python的包管理工具,它可以用来安装、升级、卸载Python包。以下是一些常用的pip指令: 安装包: bash复制代码…...
【Java EE初阶十二】网络编程TCP/IP协议(二)
1. 关于TCP 1.1 TCP 的socket api tcp的socket api和U大片的socket api差异很大,但是和前面所讲的文件操作很密切的联系 下面主要讲解两个关键的类: 1、ServerSocket:给服务器使用的类,使用这个类来绑定端口号 2、Socket…...
QuickSnap:提升三维建模效率的快速对齐工具——三维建模爱好者的精准对齐解决方案
QuickSnap:提升三维建模效率的快速对齐工具——三维建模爱好者的精准对齐解决方案 【免费下载链接】quicksnap Blender addon to quickly snap objects/vertices/points to object origins/vertices/points 项目地址: https://gitcode.com/gh_mirrors/qu/quicksna…...
【课后习题答案】SystemVerilog for Verification 3rd Edition第五章(绿皮书第三版)
1 解答class MemTrans;// a. 8位logic类型的data_inlogic [7:0] data_in;// b. 4位logic类型的addresslogic [3:0] address;// c. 打印data_in和address的void函数function void print();$display("data_in 0x%h, address 0x%h", data_in, address);endfunction// …...
深入S32K3XX以太网内部:用逻辑分析仪抓取MII时序,图解数据收发全过程
深入S32K3XX以太网内部:用逻辑分析仪抓取MII时序,图解数据收发全过程 在嵌入式系统开发中,以太网通信的底层实现往往像一个黑盒子——我们配置好寄存器,数据就神奇地传输了。但对于真正追求技术深度的开发者来说,理解信…...
实验室搬砖实录:手把手教你搞定柱层析,从TLC监测到梯度洗脱的保姆级避坑指南
实验室搬砖实录:手把手教你搞定柱层析,从TLC监测到梯度洗脱的保姆级避坑指南 记得第一次独立做柱层析时,盯着那根玻璃柱看了半小时,愣是没敢动手。TLC板上明明分得挺开的点,怎么一上柱子就全乱了?洗脱液极性…...
电话号码定位开源工具实战完全指南:从部署到企业应用
电话号码定位开源工具实战完全指南:从部署到企业应用 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirro…...
半导体制造中的ProcessJob与Control Job:从定义到实战避坑指南
半导体制造中的ProcessJob与Control Job:从定义到实战避坑指南 在半导体制造的高精度世界里,每一片晶圆的流转都像一场精密编排的交响乐。而ProcessJob(PJ)和Control Job(CJ)就是这场演奏中不可或缺的指挥…...
WinDiskWriter:Mac用户制作Windows启动盘的零门槛开源工具
WinDiskWriter:Mac用户制作Windows启动盘的零门槛开源工具 【免费下载链接】windiskwriter 🖥 A macOS app that creates bootable USB drives for Windows. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 项目地址:…...
3步实现Zotero SciPDF插件:科研文献PDF自动下载的终极解决方案
3步实现Zotero SciPDF插件:科研文献PDF自动下载的终极解决方案 【免费下载链接】zotero-scipdf Download PDF from Sci-Hub automatically For Zotero7 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scipdf 还在为学术文献PDF获取困难而烦恼吗&#…...
zh3100组合式选粉机的设计【说明书+27张CAD图纸】
zh3100组合式选粉机作为粉体分级领域的核心设备,其设计融合了流体力学、机械传动与颗粒分离理论,通过优化结构参数与气固两相流场分布,实现高精度、低能耗的粉体分级作业。该设备采用模块化组合设计理念,将选粉室、导流装置、分级…...
5B00,5B01,5B02,1700,1701,1702,1704,P07清零软件G3800,TS3480 ,TS3380 ,G3000,G1810,TS9020, TS8020,TS3480
下载地址:链接:https://pan.baidu.com/s/1j7Nwv715wX1JL3qidnGyXA?pwd0000 提取码:0000 常见 佳能打印机 型号: G5080 G6080 G7080 G1810 G2810 G3810 G4810 G1800 G2800 G3800 G4800 G5010 G6010 G7010 G1010 G2010 G3010 G4010 G1000 G2000 G3000 G40…...
