攻防世界逆向刷题笔记(新手模式6-?)

news2024/12/17 2:01:44

6.1000clicks

看题目名字似乎是让咱们点击1000次之后才会出flag。本来打算用CE看能不能搜索出来数值,技术不到家,最后没有搜索到,还导致永劫无间打不了了。所以还是拿出IDA老实分析。

直接搜索flag字符,出来一大堆。张紫涵大佬说是Text对的这个,一看果然是。但是不能局限于此,还要分析为啥是这个。

发现除了text,其他的都没有交叉引用。那就差不多可以判断这个就是flag了。而且目标字符串的引用意思是弹窗提示此消息,更落实我们的猜想。

软件还有一个输入框,会根据输入的信息提示正确或者错误。使用OD修改后发现并没有什么用处,可能是在下才疏学浅,等有机会,看看是不是方法出了问题

补充:原来OD调试的时候,success代码附近就会显示flag!

7.crypt (暂时没解决)

看名字,估计是个算法相关的,进入IDA看看吧。

首先粗粗看一下代码,给函数改个名字,便于分析。

malloc()找到可用内存中一个大小适合的块。
内存是匿名的;

也就是说,malloc()分配了内存,但没有为它指定名字。
然而,它却可以返回那块内存第一个字节的地址

看图片得知,str是一串疑似编码表的字符串,而v3表示了它的长度。估计memset函数把str后面的改成0了。v10数组则全是为0. v9是一块内存的首地址。

先来看sub_140001120函数。

a1就是v9,v9是一快内存的首地址的指针变量。前几行首先给v9这块内存进行赋值,然后给v6赋值。LOBYTE代表16位数的低八位,所以result和v7也被赋值。鉴于result会被返回,所以可以先不管result。

for循环中,v8等于v9的某个值。v7 = (unsigned __int8)(*(_BYTE *)(a2 + v6) + v8 + v7);这行代码从之前介绍的内存地址(基于a2和偏移量v6)处取出一个字节的数据,与v8和当前的v7值相加,然后将结果强制转换为 8 位无符号整数类型后赋值给v7。

但是说了这么多,result却是直接返回j+1,不太清楚这个函数主要实现什么。

再来看这个函数。

8.happyctf 

这个题目还给了PBD文件,查阅PDB文件:每个开发人员都必须知道的 - iTech - 博客园​​​​​​

发现,PBD其实是一种帮助我们逆向分析的文件,IDA启动的时候可以加载这个文件。

 不加载PBD文件,可读性就会变差,需要分析好多函数!但是一旦引入PBD文件,则会带来许多便利之处,可读性则会大大增强。

可以看到,刚开始用了一个cout函数,意思是输出,这里就不再多说了。 if语句检查输入的是不是长度为24。如果等于24,则会继续向下。vector意思是容器,可以装一些东西进去。

这句代码意思是把这两个的地址绑定在一起。为什么? 我推测是因为函数内的语句  this->v = <v>。

Python 之 lambda 函数完整详解 & 巧妙运用_lamda函数python-CSDN博客

可以看这个博客,了解一下lambda的用法。它本质上是一种匿名函数.所以我们按照正常处理函数去处理它就行了。再看while循环里面的lamabda函数:

 首先看参数,我们已经知道bytee就是一个字符,也就是输入的字符的开头部分。接下来将它和0x14(也就是20)异或。将结果传入val,也就是v,也就是add(因为二者指针绑定了)。

这个函数应该也是实现指针的绑定 !↑

-----------------

关键函数如上,if语句见下,这是关键代码。 

 我们需要让它返回1,函数内if语句实现的应该是v9和key的对比。v9恰恰是异或后的数组。所以我们就可编写解题的exp:

a='rxusoCqxw{yqK`{KZqag{r`i'
b=''
for i in range(0,24):
    b+=chr(ord(a[i])^20)
print(b)

总结一下,这道题之所以没写出来,是因为我没理解lambda要当成函数看,以及指针的绑定我不懂。这道题算法总结下来就是输入一串字符串,异或之后和key对比,算法还是比较简单的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ANOMALY BERT 解读

出处&#xff1a; ICLR workshop 2023 代码&#xff1a;Jhryu30/AnomalyBERT 可视化效果&#xff1a; 一 提出动机 动机&#xff1a;无监督 TSAD 领域内&#xff0c;“训练集” 也缺失&#xff1a;真值标签&#xff08;GT&#xff09;&#xff1b;换句话说&#xff0c;一个…

Java——网络编程(中)—TCP通讯(下)

1 双向通讯—创建服务端 (双向通信是指通信双方中&#xff0c;任何一方都可为发送端&#xff0c;任何一方都可为接收端) (1 创建ServerSocket对象&#xff0c;accept()返回socket) (2 双向通讯——>也要创建键盘输入对象) (3 通过与客户端对应的Socket对象获取输入流对象…

JavaFX使用jfoenix的UI控件

jfoenix还是一个不错的样式&#xff0c;推荐使用&#xff0c;而且也可以支持scene builder中的拖拖拽拽 需要注意的是过高的javafx版本可能会使得某些样式或控件无法使用 比如alert控件&#xff0c;亲测javaFX 19版本可以正常使用 1.在pom.xml中引入依赖 GitHub地址https://gi…

利用cnocr库完成中文扫描pdf文件的文字识别

很多pdf文件文字识别软件都会收费&#xff0c;免费的网页版可能会带来信息泄露&#xff0c;还有一些类似于腾讯AI和百度AI的接口都有调用次数限制&#xff0c;因此&#xff0c;利用识别正确率极高且免费的cnocr库来自己动手做个pdf文件文字识别程序就是一个很不错的选择。以下程…

大数据笔记之flink-cdc实时同步数据

大数据笔记之flink-cdc实时同步数据(mysql -->doris) 一、基本概念 Flink CDC 是一个基于流的数据集成工具&#xff0c;旨在为用户提供一套功能更加全面的编程接口&#xff08;API&#xff09;。 该工具使得用户能够以 YAML配置文件的形式&#xff0c;优雅地定义其 ETL&…

【数学】矩阵的逆与伪逆 EEGLAB

文章目录 前言matlab代码作用EEGLAB 中的代码总结参考文献 前言 在 EEGLAB 的使用中&#xff0c;运行程序时出现了矩阵接近奇异值&#xff0c;或者缩放错误。结果可能不准确。RCOND 1.873732e-20 的 bug&#xff0c;调查 EEGLAB 后发现是 raw 数据的问题。 matlab代码 A_1 …

RTMP推流平台EasyDSS在无人机推流直播安防监控中的创新应用

无人机与低空经济的关系密切&#xff0c;并且正在快速发展。2024年中国低空经济行业市场规模达到5800亿元&#xff0c;其中低空制造产业占整个低空经济产业的88%。预计未来五年复合增速将达到16.03%。 随着科技的飞速发展&#xff0c;公共安防关乎每一个市民的生命财产安全。在…

【记录49】vue2 vue-office在线预览 docx、pdf、excel文档

vue2 在线预览 docx、pdf、excel文档 docx npm install vue-office/docx vue-demi0.14.6 指定版本 npm install vue-office/docx vue-demi <template><VueOfficeDocx :src"pdf" style"height: 100vh;" rendere"rendereHandler" error&…

C# 探险之旅:第二十四节 - 类型class基础,一场“类”似的奇妙冒险

嘿&#xff0c;勇敢的探险家们&#xff01;欢迎来到C#王国的“类”似奇妙冒险&#xff01;今天&#xff0c;我们要深入探索一个神秘而强大的领域——class&#xff08;类&#xff09;。想象一下&#xff0c;class就像C#世界里的一块魔法土地&#xff0c;每块土地上都能孕育出独…

Burp suite 3 (泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面&#xff0c;了解网络安全领域的见闻&#xff0c;了…

cpptoml介绍

cpptoml 是一个用于 C 的开源库&#xff0c;旨在提供对 TOML&#xff08;Toms Obvious, Minimal Language&#xff09;格式的支持。它允许开发者轻松地在 C 项目中读取、解析和生成 TOML 格式的配置文件。cpptoml 是一个轻量级、易于使用的库&#xff0c;适用于那些希望将 TOML…

用户认证系统登录界面

下面是使用HTML和JavaScript实现的一个中文版登录界面&#xff0c;包含登录、注册和修改密码功能。注册成功后会显示提示信息&#xff0c;在登录成功后进入一个大大的欢迎页面。 1.代码展示 <!DOCTYPE html> <html lang"zh-CN"> <head><meta …

Pyside6 --Qt设计师--简单了解各个控件的作用之:Item Views

目录 一、List View二、Tree View三、Table View四、Column View 一、List View 学习方法和Buttons一样&#xff0c;大家自己在qt设计师上面在属性编辑区进行相应的学习&#xff01; 我就先紧着qt设计师的页面进行讲解&#xff0c;部分内容查自AI。 后面有什么好用的控件或者…

ArcGIS MultiPatch数据转换Obj数据

文章目录 ArcGIS MultiPatch数据转换Obj数据1 效果2 技术路线2.1 Multipatch To Collada2.2 Collada To Obj3 代码实现4 附录4.1 环境4.2 一些坑ArcGIS MultiPatch数据转换Obj数据 1 效果 2 技术路线 MultiPatch --MultipatchToCollada–> Collada --Assimp–> Obj 2.…

【mybatis】缓存

目录 1. mybatis的运行 1.1 引言 1.2 具体运行&#xff1a; 1.3 sqlSession 介绍local catch 2. 缓存 2.1 概念 2.2 使用缓存的原因 2.3 什么样的数据能使用缓存 3. Mybatis缓存 3.1 一级缓存 3.1.1 测试一级缓存 3.1.2 缓存失效的四种情况 $1 sqlSession不同 $…

ElasticSearch - 理解doc Values与Inverted Index倒排索引

文章目录 概述倒排索引&#xff1a;从图书馆的索引卡片谈起倒排索引的工作原理 docValues&#xff1a;从数据库的列式存储说起docValues的工作原理 docValues与倒排索引的对比两者的联系&#xff1a;组合使用&#xff0c;优化搜索与分析 小结 概述 在使用 Elasticsearch 进行大…

Python | 数据可视化中常见的4种标注及示例

在Python的数据可视化中&#xff0c;标注&#xff08;Annotation&#xff09;技术是一种非常有用的工具&#xff0c;它可以帮助用户更准确地解释图表中的数据和模式。在本文中&#xff0c;将带您了解使用Python实现数据可视化时应该了解的4种标注。 常见的标注方式 文本标注箭…

【原生js案例】如何实现一个穿透字体颜色的导航

普通的导航大家都会做&#xff0c;像这种穿透字体的导航应该很少见吧。高亮不是通过单独设置一个active类来设置字体高亮颜色&#xff0c;鼠标滑过导航项&#xff0c;字体可以部分是黑色&#xff0c;不分是白色&#xff0c;这种效果的实现 感兴趣的可以关注下我的系列课程【we…

前端中图标的使用

1 antd 使用inconfont.cn中的图标 <template><div class"icons-list"><icon-font type"icon-tuichu" /><icon-font type"icon-facebook" /><icon-font type"icon-twitter" /></div> </templ…

回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 CNN-BiGRU,即卷积神经网络(CNN)与双…