re学习(35)攻防世界-no-strings-attached(动调)

news2025/5/15 19:54:28

参考文章:
re学习笔记(28)攻防世界-re-no-strings-attached_Forgo7ten的博客-CSDN博客

攻防世界逆向入门题之no-strings-attached_攻防世界 no-strings-attached_沐一 · 林的博客-CSDN博客 本人题解:
扔入Exepeinfo中查壳和其他信息:

如图所示,32位ELF的linux文件,照例扔如IDA32位中查看代码信息,跟进Main函数:

跟进authenticate()函数

这里有个decrypt函数,中文名是加密,不在导入表中说明不是系统函数,后面的if判断条件是输入,还有个比较的wcscmp函数,后面两个wprintf分别是success 和access这些成功和拒绝的字符串地址。
fgetws函数是从输入流stdin中获取0x2000个字符给ws,也就是说s2是关键了,s2由decrypt函数得出,decrypt是用户自定义函数,在这里学到了非系统函数的英文名会是题目给的暗示,所以这里是加密操作后与输入的比较,只要输入后与加密后的s2一样就会打印success或access这些字符串,那flag自然也在加密函数中了。

然后开始动调:


这里有一个问题卡了我许久,就是在Ubuntu中无法打开32位调试文件,需要安装一些配置才可以

参考文章:

【BUG】Linux目录下明明有可执行文件却提示找不到,“No such file or directory”,解决:为64位Ubuntu安装32位程序的运行架构_linux文件存在 但报错说找不到_shandianchengzi的博客-CSDN博客

可以解决

 

 

程序在08048720执行完call,并将返回值存储在eax里。
然后通过eax赋值给[ebp+s2],也就是字符串s2,
F8单步执行到08048725
然后跳转到eax存储的地址上

 

 

其实在这里也是可以看到flag的,一个一个写出来就可以了,但是也可以提取数据,一块弄出来

参考别人写的脚本:
数据提取:
 

unsigned int data[38] = {
    0x00000039, 0x00000034, 0x00000034, 0x00000037, 0x0000007B, 0x00000079, 0x0000006F, 0x00000075,
    0x0000005F, 0x00000061, 0x00000072, 0x00000065, 0x0000005F, 0x00000061, 0x0000006E, 0x0000005F,
    0x00000069, 0x0000006E, 0x00000074, 0x00000065, 0x00000072, 0x0000006E, 0x00000061, 0x00000074,
    0x00000069, 0x0000006F, 0x0000006E, 0x00000061, 0x0000006C, 0x0000005F, 0x0000006D, 0x00000079,
    0x00000073, 0x00000074, 0x00000065, 0x00000072, 0x00000079, 0x0000007D
    };

 然后将其转换为字符即为flag

#include <stdio.h>
int main()
{
    unsigned int data[38] = {
    0x00000039, 0x00000034, 0x00000034, 0x00000037, 0x0000007B, 0x00000079, 0x0000006F, 0x00000075,
    0x0000005F, 0x00000061, 0x00000072, 0x00000065, 0x0000005F, 0x00000061, 0x0000006E, 0x0000005F,
    0x00000069, 0x0000006E, 0x00000074, 0x00000065, 0x00000072, 0x0000006E, 0x00000061, 0x00000074,
    0x00000069, 0x0000006F, 0x0000006E, 0x00000061, 0x0000006C, 0x0000005F, 0x0000006D, 0x00000079,
    0x00000073, 0x00000074, 0x00000065, 0x00000072, 0x00000079, 0x0000007D
    };
    for(int i=0;i<38;i++)
        printf("%c",data[i]);
    return 0;
}

 flag为9447{you_are_an_international_mystery}

总结:
1.
不在导入表(import)中说明不是系统函数,非系统函数的英文名会是题目给的暗示

2.动态调试类似内存调试,在内存中找数据,寻找中间变量

3.IDA是根据自己的规则给无法解析变量名赋值的,也就是说在IDA里变量是s2这个名字,但是实际上程序里并没有s2这个变量名,所以只能查看寄存器了,毕竟函数是先返回到eax寄存器中再移动到变量中的。

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

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

相关文章

预测性维护能为工厂带来什么改变?

数字化时代的到来&#xff0c;为制造业带来了前所未有的机遇和挑战。在数字化转型的浪潮中&#xff0c;预测性维护&#xff08;PredictiveMaintenance&#xff0c;简称PdM&#xff09;凭借其卓越的潜力&#xff0c;在提升设备效率、降低成本、优化生产等方面成为工厂的强有力助…

【0基础入门Python笔记】二、python 之逻辑运算和制流程语句

二、python 之逻辑运算和制流程语句 逻辑运算控制流程语句条件语句&#xff08;if语句&#xff09;循环结构&#xff08;for循环、while循环&#xff09;continue、break和pass关键字控制流程语句的嵌套以及elif 逻辑运算 Python提供基本的逻辑运算&#xff1a;不仅包括布尔运…

龙测面对面,一张图让你明白软件测试saas企业的功能布局

大家好&#xff0c;和大家认识也挺久了&#xff0c;好像也没有做过自我介绍。择日不如撞日&#xff0c;今天我们就好好聊聊吧。自我介绍分为了两个部分&#xff0c;上半部分是龙测科技的由来、梦想以及目前的成就&#xff1b;下半部分是龙测目前的产品功能框架。对产品功能感兴…

windows下redis服务启动及.bat文件中中redis服务的启动

windows windows下redis服务的启动 1、不配置环境变量 找到redis服务的安装目录进入命令行窗口并输入命令redis-server.exe redis.windows.conf2、配置环境变量 将redis安装目录配置在path环境变量中之后就可以在cmd窗口的任意位置输入redis-server命令就可以启动redis服务…

[测试报告] 爱搜Blog 自动化测试报告

目录 项目背景 项目功能 测试详情 一、设计测试用例 二、功能测试步骤结果 1. 登录页面 2. 个人博客页面 3. 博客详情页 4. 博客编辑页 三、自动化测试及测试结果 1. 测试环境 2. 登录测试用例&#xff1a; 3. 个人详情页测试用例&#xff1a; 4. 写博客并发布测试…

1849. 将字符串拆分为递减的连续值;1024. 视频拼接;1530. 好叶子节点对的数量

1849. 将字符串拆分为递减的连续值 核心思想:递归回溯题。和842. 将数组拆分成斐波那契序列的代码是差不多的&#xff0c;遇到拆分题首先想的就是dfs(index)表示从index开始拆分是否可以&#xff0c;然后去枚举拆分的end即可&#xff0c;我把这种题目归纳为拆分题&#xff0c;…

Kubernetes 对外服务 Ingress

Ingress 简介 service的作用体现在两个方面&#xff0c;对集群内部&#xff0c;它不断跟踪pod的变化&#xff0c;更新endpoint中对应pod的对象&#xff0c;提供了ip不断变化的pod的服务发现机制&#xff1b;对集群外部&#xff0c;他类似负载均衡器&#xff0c;可以在集群内外部…

解决访问Github出现的Couldn‘t connect to server错误

文章目录 前言原因分析以及解决办法原因分析解决办法 参考 前言 在Github上面克隆代码仓库出现Failed to connect to 127.0.0.1 port 1080 after 2063 ms: Couldnt connect to server、Failed to connect to github.com port 443 after 21083 ms: Couldnt connect to server等…

Docker中为RabbitMQ安装rabbitmq_delayed_message_exchange延迟队列插件

1、前言 rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延迟消息传递&#xff08;或计划消息传递&#xff09;的插件。 插件下载地址&#xff1a;https://www.rabbitmq.com/community-plugins.html 1、下载插件 首先需要确定我们当前使用的RabbitMQ的版本&#xff0c…

Win11任务栏左下角如何显示天气

最近有小伙伴找到我想要知道win11左下角怎么显示天气&#xff0c;小编为小伙伴带来了win11左下角显示天气方法介绍&#xff0c;首先打开任务栏设置&#xff0c;然后找到小组件&#xff0c;点开小组件之后可以看到关于天气的选项&#xff0c;点击右上角的就可以成功的添加&#…

Ozon限制售卖品类 速速收藏

每个电商平台都会有自己的规则和政策&#xff0c;都会有一些限制销售的品类&#xff0c;根据不同地域和文化会有不同&#xff0c;本文来介绍一下老牌俄罗斯购物平台Ozon有哪些限制售卖的品类。选品的商家需要明确自己的品类有没有违规&#xff0c;违规商品平台会进行下架和限制…

【C++类和对象】类有哪些默认成员函数呢?(下)

文章目录 一、类的6个默认成员函数二、日期类的实现2.1 运算符重载部分2.2 日期之间的运算2.3 整体代码1.Date.h部分2. Date.cpp部分 三. const成员函数四. 取地址及const取地址操作符重载扩展内容 总结 ヾ(๑╹◡╹)&#xff89;" 人总要为过去的懒惰而付出代价ヾ(๑╹◡…

Docker常用命令学习和总结

文章目录 0.前言1. 镜像&#xff08;Images&#xff09;相关命令&#xff1a;1. docker images&#xff1a;列出本地的镜像。2. docker pull&#xff1a;从镜像仓库中下载镜像。3. docker push&#xff1a;将本地镜像推送到镜像仓库。4. docker build&#xff1a;根据 Dockerfi…

黑客拍卖”访问权限“,最高要价 12 万美金

Bleeping Computer 网站披露&#xff0c;某黑客声称入侵了一家大型拍卖行的内部网络系统&#xff0c;并向愿意支付 12 万美元的人提供访问权限。 据悉&#xff0c;安全研究人员对 72 个帖子进行抽样分析时&#xff0c;在一个以提供初始访问代理&#xff08;IAB&#xff09;市场…

每天一道leetcode:剑指 Offer 55 - II. 平衡二叉树(适合初学者递归)

今日份题目&#xff1a; 输入一棵二叉树的根节点&#xff0c;判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1&#xff0c;那么它就是一棵平衡二叉树。 示例1 给定二叉树 [3,9,20,null,null,15,7] 3/ \9 20/ \15 7 返回 true 。 示例2 …

Centos安装搜狗输入法

目录 1、切换到root 2、卸载ibus&#xff08;如果已经卸载&#xff0c;可以忽略该步骤&#xff09; 3、安装epel源 4、安装fcitx 5、安装拼音输入法 6、安装依赖包 7、安装搜狗输入法 8、安装Alien 9、deb包 转 rpm包 (在deb包目录下或指定deb包目录) 10、安装转换的…

初学者SpringBoot+Vue打通前后端详细步骤(从零开始)

目录 前言介绍 一、后端SpringBoot项目创建 &#xff08;一&#xff09;springboot后端实现增删改查 二、前端Vue项目的创建 &#xff08;一&#xff09;下载必要的环境&#xff08;有则跳过&#xff09; &#xff08;二&#xff09;创建vue项目并使用Element-ui 三、前…

E96系列电阻阻值和代码、乘数对照表

1、为什么要用代码表示&#xff1f; 0805封装还可以简单易懂写下四位丝印&#xff0c;比如10K的1002&#xff0c;但0603的封装上面再想写下四位丝印就没空间了&#xff0c;就算写了也不容易看不清。 2、E96系列电阻阻值和代码、乘数对照表 下面是E96系列的对照表&#xff0c;…

SVG在线编辑器TOP5,这些工具你都得知道!

随着响应式网站设计的普及,SVG这种矢量图格式越来越受欢迎。SVG可以使图像在任何设备上展示效果出色。那么有哪些值得推荐的SVG在线编辑器呢?本文整理了5款热门实用的SVG在线编辑工具,它们功能强大,甚至可以替代Photoshop。这些SVG编辑器值得设计师们亲自试用,相信能给大家带来…

AR/VR眼镜转接器方案,实现同时传输视频快充方案

简介 虚拟现实头戴显示器设备&#xff0c;简称VR头显VR眼镜&#xff0c;是利用仿真技术与计算机图形学人机接口技术多媒体技术传感技术网络技术等多种技术集合的产品&#xff0c;是借助计算机及最新传感器技术创造的一种崭新的人机交互手段。VR头显VR眼镜是一个跨时代的产品。…