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

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.mzph.cn/diannao/63996.shtml

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

相关文章

CentOS 上如何查看 SSH 服务使用的端口号?

我们知道&#xff0c;linux操作系统中的SSH默认情况下&#xff0c;端口是使用22&#xff0c;但是有些线上服务器并不是使用的默认端口&#xff0c;那么这个时候&#xff0c;我们应该如何快速知道SSH使用的哪个端口呢&#xff1f; 1、通过配置文件查看 cat /etc/ssh/sshd_confi…

定时/延时任务-Kafka时间轮源码分析

文章目录 1. 概要2. TimingWheel2.1 核心参数2.2 添加任务2.3 推进时间 3. TimerTaskList3.1 添加节点3.2 删除节点3.3 刷新链表3.4 队列相关 4. 时间轮链表节点-TimerTaskEntry5. TimerTask6. Timer 和 SystemTimer - 设计降级逻辑7. 上层调用8. 小结 1. 概要 时间轮的文章&a…

厦门凯酷全科技有限公司深耕抖音电商运营

在数字经济飞速发展的今天&#xff0c;抖音电商平台以其独特的社交属性和庞大的用户基础&#xff0c;迅速成为众多品牌和商家的新战场。在这个充满机遇与挑战的市场中&#xff0c;厦门凯酷全科技有限公司凭借其专业的服务、创新的理念和卓越的执行力&#xff0c;成为了抖音电商…

探秘多AI Agent模式:机遇、应用与未来展望(5/30)

摘要&#xff1a;多 AI Agent 模式是一种强大的人工智能架构&#xff0c;它利用多个智能体&#xff08;Agent&#xff09;之间的协作与交互来解决复杂问题、执行多样化任务并模拟复杂系统行为。在这种模式中&#xff0c;每个 Agent 都具备独立的感知、决策和行动能力&#xff0…

java之集合(详细-Map,Set,List)

1集合体系概述 1.1集合的概念 集合是一种容器&#xff0c;用来装数据的&#xff0c;类似于数组&#xff0c;但集合的大小可变&#xff0c;开发中也非常常用。 1.2集合分类 集合分为单列集合和多列集合 Collection代表单列集合&#xff0c;每个元素&#xff08;数据&#xff…

uni-app多环境配置动态修改

前言 这篇文章主要介绍uniapp在Hbuilderx 中&#xff0c;通过工程化&#xff0c;区分不同环境、动态修改小程序appid以及自定义条件编译&#xff0c;解决代码发布和运行时手动切换问题。 背景 当我们使用uniapp开发同一个项目发布不同的环境二级路径不同时&#xff0c;这时候…

继电器控制与C++编程:实现安全开关控制的技术分享

在现代生活中,继电器作为一种重要的电气控制元件,在电气设备的安全控制中起到了至关重要的作用。通过低电流控制高电流,继电器能够有效地隔离控制电路与被控设备,从而保障使用者的安全。本项目将介绍如何通过树莓派Pico与继电器模块结合,使用C++编程实现继电器的控制。 一…

软考中级-软件设计师通过心路经验分享

执念&#xff0c;第四次终于通过了 没买书&#xff0c;下班后每天2小时&#xff0c;四个2个月终于过了 学习经验&#xff1a; 1.下班后学习真的靠毅力&#xff0c;和上学的时候考证不是一个状态&#xff0c;大家要及时调整&#xff0c;否则过程很痛苦 2.失败三次的经验&#xf…

分布式 Raft算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & Raft算法 & 总结》《分布式 & Raft算法 & 问题》 参考文献 《Raft一致性算法论文译文》《深入剖析共识性算法 Raft》 简介 Raft 木筏是一种基于日志复制实现的分布式容错&一致性算法。在Raft算法…

仿iOS日历、飞书日历、Google日历的日模式

仿iOS日历、飞书日历、Google日历的日模式&#xff0c;24H内事件可自由上下拖动、自由拉伸。 以下是效果图&#xff1a; 具体实现比较简单&#xff0c;代码如下&#xff1a; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;…

朗致面试---IOS/安卓/Java/架构师

朗致面试---IOS/安卓/Java/架构师 一、面试概况二、总结三、算法题目参考答案 一、面试概况 一共三轮面试&#xff1a; 第一轮是逻辑行测&#xff0c;25道题目&#xff0c;类似于公务员考试题目&#xff0c;要求90分钟内完成。第二轮是技术面试&#xff0c;主要是做一些数据结…

浅谈I-STARIS国际演艺集团为融合中国市场,开办的各类中式训练营

I-STARIS国际演艺集团给旗下各国演员们开办针对性的训练营&#xff0c;有针对中文基础的&#xff0c;有针对中国戏曲的&#xff0c;有针对中国武术的&#xff0c;不由让我们想到了老版《红楼梦》拍摄之前&#xff0c;演员们足足训练了三个月&#xff0c;才开始进入拍摄。1984年…

电脑怎么设置通电自动开机(工控机)

操作系统&#xff1a;win10 第一步&#xff0c;电脑开机时按del键进入bios页面。 第二步&#xff0c;选择advanced下的IT8712 Super IO Configuration 第三步&#xff0c;找到Auto Power On&#xff0c;将其从Power off设置为Power On 第四步&#xff0c;F10保存&#xff0c;大…

springboot+javafx使用aop切面导致的fx:id不能被注入问题

记录一个我遇到得问题 问题描述 我本来使用AOP切面来进行全局异常管理&#xff0c;但是使用AOP之后fxml中通过fx:id绑定得参数无法被注入 Slf4j Component Aspect public class GlobalExceptionAspect {AfterThrowing(pointcut "execution(* com.shkj.videoclassifica…

MATLAB图卷积神经网络GCN处理分子数据集节点分类研究

全文链接&#xff1a;https://tecdat.cn/?p38570 本文主要探讨了如何利用图卷积网络&#xff08;GCN&#xff09;对图中的节点进行分类。介绍了相关的数据处理、模型构建、训练及测试等环节&#xff0c;通过对分子数据集的操作实践&#xff0c;展示了完整的节点分类流程&#…

Ubuntu安装Gitlab详细图文教程

1、环境准备 1.1、Ubuntu环境 Ubuntu24.04Sever版安装教程 1.2、更新系统 sudo apt update -y sudo apt-get update sudo apt-get upgrade 2、安装Nginx 2.1 安装nginx # 安装 apt install nginx -y 2.2 修改nginx配置⽂件 # 修改nginx配置 vim /etc/nginx/si…

1. 机器学习基本知识(2)——机器学习分类

1.4 机器学习分类 1.4.1 训练监督 1. 监督学习&#xff1a;已对训练数据完成标记 分类&#xff1a;根据数据及其分类信息来进行训练&#xff0c;使模型能够对新的数据进行分类 回归&#xff1a;给出一组特征值来预测目标数值 2. 无监督学习&#xff1a;没有对训练数据进行任…

Jupyter Notebook 切换虚拟环境

方法 切换到需要添加到Jupyter Notebook中的虚拟环境&#xff0c;执行&#xff1a; python -m ipykernel install --name Jupyter Notebook中显示的虚拟环境名称如果遇到 [Errno 13] Permission denied: /usr/local/share/jupyter类似的权限问题&#xff0c;可能是没有对应的…

【游戏设计原理】7 - 加德纳的多元智能理论

虽然多元智能理论是对认知方式的分类&#xff0c;但它也可以为游戏设计提供丰富的思路和策略&#xff0c;帮助设计师创建更具吸引力、包容性和多样性的游戏。通过理解不同玩家的认知方式和优势&#xff0c;我们可以更精准地设计游戏的元素和玩法&#xff0c;使其能够吸引广泛的…

SAP MMPV报错MMPV_DATE_CHECK

异常提示&#xff1a;MMPV_DATE_CHECK检查失败&#xff0c;请参照NOTE 1082841。 解决方法&#xff1a; TCODE&#xff1a;SU3 在用户参数上增加&#xff1a;参数 MMPV_READ_NOTE 参数值&#xff1a;当天日期。