whatamitoyou-小白详解
实验吧题目的writeup(小白详细(图))是本人,不存在抄袭,writeup不知道成功没,查询不到,所以在这里简略备份记录一下研究成果;
UE打开
可以看到是文件头是ELF,内部有linux的库字符,使用gcc编译;去linux系统下看文件
ELF信息
百度得知ELF是linux下的文件头,运行readelf –h whatamitoyou可以查看文件头信息
可以看到该文件是AMDx86-64生成的64位可执行文件,我们环境支持运行,chmod 744给权限后运行一下,发现出错
初步猜测是内存溢出或者内部代码计算出问题,用gdb试探一下,发现在40191C处执行出错,但是没有捕捉到函数名之类的额外提示,意料之中
调试还是要专业工具来,安装好IDA后将linux_server64拷贝到linux系统中,给权限运行如果程序是32位就拷贝linux_server(看雪:IDA-Linux教程https://bbs.pediy.com/thread-247830-1.htm)
几个指令段转伪代码看看,前面gdb提示错误在40191C处,转到,F5查看伪代码
正好是main函数
关键逻辑如下
v282、v283、v285与生成KEY有关,变量定义v283=0,前后代码分析,该变量是统计字符长度;v285=&v140那么我们去看v140是什么,变量定义为8字节,变量赋值转为char字符后发现是一个单词,依次转到v144(140~144代码中是个char数组?)
循环中v282是我们输入的参数,用于计算指针偏移量,拼接字符串,而他的定义为char
根据题目和前期出现的字符串,可以搜索到一首歌My Best Friends InThe World(What Am I To You?)。对比这首歌可以看出hex内的歌词顺序是乱,且Key的长度应该是歌词的句数(n=35),成功整理歌词顺序则可获取KEY。
断点到while下第一句,然后运行程序,打开视图->Strings;查看内存中各句歌词的地址(如果没有,就断点在v283处,重新打开Strings)
歌词顺序可知:
歌词第一句为”Everyone, Bubblegum I’m so dumb”,下一句是”I should have just told you”
我们搜索这两句
第一句7FFF718A4E10
第二句7FFF718A46F0
计算偏移量为6F0-E10=-720;偏移量居然出现负数,这明显不对,按理说第二句应该是第一句指针后移一定量的,IDA内存读取不行啊;(这里小白研究了近5个小时,没研究出结果,后面上网搜索视频解答,发现是IDA的锅)
EDB
kali打开edb debugger调试,执行命令“edb --run '/root/whatamitoyou' aaaaaaaaaaaaaa”,根据IDA中获取到的地址,在edb中断点到“00000000004018ED”
运行程序到断点处,然后在内存中转到rax地址处查看,是第一句歌词(0x00007ffebe03fce0),接下来搜索第二句歌词位置
有两处cb8和df0,很明显应该是df0处,不过这里我将两个地址在内存中的数据都查看了,分析一下为啥IDA找的是错误的,明显IDA找到的是cb8位置出的,没有找到df0处的,这里两处其实都是指向5c0处,不知道为什么IDA没找到后面哪个,毕竟用的绿色版,唉
KEY获取计算
汇总上面分析结果:
第一句歌词地址0x00007ffebe03fce0;
第二句歌词地址0x00007ffebe03fdf0;
指针汇编语句mov rax, [rax+rdx*8];
伪代码v285 = (__int64 *)v285[v282 - 65 + 32LL];
可得计算公式:
v282 - 65 + 32=rdx;//rdx由前面的汇编计算出来,然后传给指针汇编语句
0x00007ffebe03fce0+rdx*8=0x00007ffebe03fdf0;//第一句歌词偏移后指针指向第二句歌词
计算出
rdx*8=0x110;rdx=0x22
v282-33=34;v282=67 //ASCII “C”
因此第一个字符为ASCII码67,即字符C;
依次类推,得到剩下的输入。
完整的输入为CBDABCADBCCABBABBABACBCCABDADBABABB
加上这个参数运行程序得到“Your password is tjctf{pblgjd}”
whatamitoyou-小白详解相关推荐
- 小白给小白详解维特比算法(一)
小白给小白详解维特比算法(一) 小白给小白详解维特比算法一 篱笆网络Lattice的最短路径问题 这个问题长什么样子 这个问题难在哪里 简化成这个模样你总能回答了吧 下一步我们该干什么 别倒立了我们再 ...
- 51单片机——LED 点阵点亮一个点,小白详解
LED点阵介绍: LED点阵是由发光二极管排列组成的显示器件,在我们生活中的电器中随处可见,被广泛用于汽车报站器,广告屏等. 通常用用较多的是8*8点阵,然后使用多个8*8点阵组成不同分辨率的LED点 ...
- 真-小白详解-Springboot微信网页授权!!!
个人也是一个小白,记录自己开发微信网页授权的过程,其中有什么不足,欢迎各位指点!!! 开发前提: (1)Springboot的开发环境 (2)导入github的微信SDK <dependency ...
- 小白给小白详解维特比算法(二)
https://blog.csdn.net/athemeroy/article/details/79342048 本文致力于解释隐含马尔科夫模型和上一篇我们提到的篱笆网络的最短路径问题的相同点和不同点 ...
- Android-Universal-Image-Loader的使用方法(小白详解)
Universal-Image-Loader是一款开源工具,我是刚开始做android,我不知道这款工具是怎么实现的,我只是知道他能干什么,我是怎么用他来干我的事的,嘿嘿,就像铁锤一样,我不用知道他是 ...
- 双数组trie树详解
目录 双数组trie树的构建 构建base array 构建check array 双数组trie树的查询 双数组trie树的构建 NLP中trie树常用于做快速查询,但普通的trie树由于要保存大量 ...
- 不带头节点的链表有哪些缺点_23张图!万字详解「链表」,从小白到大佬!
链表和数组是数据类型中两个重要又常用的基础数据类型. 数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解 ...
- 【小白学PyTorch】10.pytorch常见运算详解
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 <<小白学PyTorch>> 参考目录: ...
- python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...
前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...
- cass地籍参数设置快捷命令_南方cass详解+视频教程+插件汇总,小白快速上手!限时领取...
南方cass详解+视频教程+插件汇总,小白快速上手!限时领取 对于测量员来说,扎实的基本功尤为重要.测量员需要通过测量为工程建设提供数据和图纸,这样才能在工作中做到游刃有余. 今天给大家整理了南方Ca ...
最新文章
- 常用memcached命令详解
- 英文句子改写在线软件_试完这些英文论文写作辅助神器,你会发现新大陆der~...
- 契约式设计(DbC)感想(二)
- asp.net中退出登陆的相关问题(解决后退或直接粘贴地址进入网页的问题)
- ARM7寄存器分布图
- 4. 用MVC实现URL路由
- C#趣味程序---三色球问题
- 103. 二叉树的锯齿形层次遍历
- 模拟驾驶能力输出,赋能客户提升稳定性信心
- 使用ogg实现oracle到kafka的增量数据实时同步
- fckeditor异常总结---1.NoClassDefFoundError: org/slf4j/LoggerFactory和NoClassDefFoundError: org/apache/log
- 《Unix网络编程(第3版)》代码编译的一些问题
- Delphi 与 DirectX 之 DelphiX(93): TDIB.DrawDarken();
- caffe学习日记--lesson7:caffemodel可视化的两种方法
- MOQL—筛选器(Selector)(三)
- 应急响应(日志/流量)
- Android 5.1-7.1 高通驱动修改 - 上篇
- 八个机器学习非常重要的应用领域,每个领域都影响着我们的生活
- Ansys Lumerical | 行波 Mach-Zehnder 调制器仿真分析
- 在计算机中正确的邮件写信格式,电子邮件格式怎么写
热门文章
- 2022年上海落户全部方式!落户上海政策变化及条件汇总!
- BT通信中数据下载的分析和实现
- Unity3D游戏开发之RPG游戏剧情呈现策略
- php sapi zend,安装php出现make: *** [sapi/cli/php]
- 苹果笔记本怎么查看计算机基本信息,如何查询苹果电脑型号_查询苹果电脑型号的方法...
- 密评|商用密码应用安全性评估
- CMake Error: Could not find a package configuration file provided by “serial“
- 「2022 最新版」未认证微信公众号图文中插入外部链接教程
- 障碍期权定价 python_Python王牌加速库2:深度学习下的障碍期权定价
- 《2018跟着小虎玩着去软考--小虎新视角历年信息系统项目管理师试题讲解(2014-2017)》软考书之序言