实验吧-catalyst-system
刚学逆向很多都不懂,本题也是在看了
http://countersite.org/articles/reverse_engineering/136-revers-s-alexctf-2017.html上的writeup
后才有点明白,但还有一些不明白的地方,写这个writeup一方面记录自己的思考过程,一方面给别人一点思路。
首先将题目给的可执行文件拖到IDA中,左侧函数栏找到main函数,F5键可以看到反编译的伪代码:
从上面的变量定义初步判断v7和v8是字符串或是数组之类的变量。
从上面的伪代码,一般系统中输入用户名和密码就会显示登录,我们可以猜测v8是指username,v7是指pasdword,或者相反。
五个关键函数:
sub_400C9A()
可以知道sub_400C9A(v8)返回sub_400C41(i)的返回值,sub_400C9A(i)访问v8的值,当v8中没有值时,记下i,并返回sub_400C41(i),可以判断,i就是v8数组大小而且不会超过49,通过修改sub_400C41(i)如下,可知长度是8或12。
sub_400CDD(v8):
这是对v8的检测,很明显只要解出如下方程就可算出v8.
利用Matlab解方程:
得到
V4 = 1635017059
V3 = 1953724780
V2 = 1868915551
转十六进制,再转ASCII码,V8为:catalyst_ceo,应该是用户名,这里需要把字符串反转,可能是因为存储方式的原因,具体不太明,代码如下:
Sub_4008F7是规定字符范围,没什么用,过
Sub400977(v8,v7)
上面已经计算出v8数组,可以计算srand(a1[1] + *a1 + a1[2])
再看
由此可计算a2,即v7,密码,用到srand和rand都是在C环境下,需在C中计算。
转ascii码(我不会再C中转无符号整型为ASCII码,因此在python中转):
得到密码为:sLSVpQ4vK3cGWyW86AiZhggwLHBjmx9CRspVGggj
最后,在linux中执行catalyst这个可执行文件,由于中间用了sleep函数,会较长时间出现填写用户名和密码的提示,然后输入用户名和密码即可。
也可以用最后一个flag生成函数生成flag,sub_400876(),但是这里的问题是s字符串的问题,双击byte_6020A0,会有发现,s的长度为40,具体为啥他是s,我也不太明白,明白的人可以告诉我。
Flag:ALEXCTF{1_t41d_y0u_y0u_ar3__gr34t__reverser__s33}
转载于:https://www.cnblogs.com/gwind/p/8093231.html
实验吧-catalyst-system相关推荐
- 实验二 Java基础语法练习-基本数据类型、运算符与表达式、选择结构
一. 实验目的及要求 目的: (1) 掌握各种变量的声明方式 (2) 掌握Java的基本数据类型.运算符与表达式的使用方法. (3) 理解Java的程序语法结构,掌握顺序结构.选择结构程序设计方法. ...
- B-ICE-EDA/SOPC FPGA创新电子教学实验平台
简介:北京革新创展科技有限公司B-ICE IEELS系列创新教学实验平台目前主推Intel Cyclone IV/V系列,标准配置如下:主机B-ICE-EDA/SOPC,核心板可选GX-SOPC-EP ...
- 【论文翻译】-- Clipper: A Low-Latency Online Prediction Serving System
NSDI2017文章. Clipper:一个低延迟在线预测服务系统. 翻译内容不见得是逐词或逐句翻译,很多是个人理解着翻译的,有不合适的地方欢迎评论指出. 本文内容涉及体系结构&机器学习.本人 ...
- System Verilog 视频缩放图像缩放 vivado 仿真
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_46621272/article/ ...
- Linux四大安全实验二-基于实验楼平台的学习
ShellShock攻击实验 前言 何为ShellShock 搭建环境 bash自定义函数 进行复现 深究源码 总结 前言 要理解这个实验可能需要一些set-uid程序的基础,详见我的上一篇博客 何为 ...
- java基础之——类的初始化顺序(转载)
原文地址:http://www.cnblogs.com/chrischennx/p/3612295.html 由浅入深,首先,我们来看一下,一个类初始化有关的都有些啥米: 静态成员变量.静态代码块.普 ...
- JSON.NET 简单的使用
JSON.NET(http://json.codeplex.com/)使用来将.NET中的对象转换为JSON字符串(序列化?),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?) 首先为 ...
- 编译原理(一)之词法分析
词法分析 (1)参考附录1设计一个简单语言的词法分析程序,要求能够处理注释.换行回车.部分复合运算符(如>=). (2)设计并实现含多条简单赋值语句的语法分析程序,要求有一定的出错提示与错误恢复 ...
- pixel 6 root
解锁bootloader 1. 登录账号 2. 进入开发者模式,打开 oem unlock 3. 连接电脑 adb reboot bootloader 4. 手机进入fastboot mode后 电脑 ...
- Pixel6 解锁bootloader
解锁bootloader 1. 登录账号 2. 进入开发者模式,打开 oem unlock 3. 连接电脑 adb reboot bootloader 4. 手机进入fastboot mode后 电脑 ...
最新文章
- 大家眼中的桌面技术支持是什么样的?
- Boyang Tex上海帛扬时装面料有限公司
- 如何查看cplex的help文档_用摹客,写出更好的产品文档
- mysql 批量远程_【shell--批量远程MySQL,执行命令】-【工作总结】
- [ofbiz]设置任务计划(job),提示service_item已经传递
- mysql :完整性约束
- 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)
- OAuth认证原理及HTTP下的密码安全传输
- 洛谷——P2068 统计和
- 请推荐好的工作流产品
- 桥牌笔记:让敌方的Q、J、10、X只拿一墩的打法
- 华硕 固件 Linux内核,ubuntu 64位编译华硕AC1200G+固件
- CCRD_TOC_2008年第1期
- MSSQL存储过程调用 C#DLL
- C语言 数组插入 – 插入排序
- 华为云发布《云原生2.0架构白皮书》,GaussDB技术再升级
- loadrunner 集合点lr_rendezvous 规则以及操作使用
- debian linux 7 安装,Debian 7.0.0安装图解教程
- 在AD中添加logo
- 2021年江苏高考成绩查询时间,2021年江苏高考成绩什么时候出来 公布时间
热门文章
- 浅析关键词与搜索引擎之间不得不说的关系
- 网站内链的6大常见形式你了解多少?
- JAVA8 获取叶节点_Java找出所有的根节点到叶子节点的节点值之和等于sum 的路径...
- 服务器功率一般多少_单机柜供电能力提升后,选择1U服务器还是2U服务器?
- 动网 php v1.0 漏洞,动网(DVBBS)PHP论坛preview.php代码执行漏洞
- python五子棋人人对战_五子棋-人人对战
- Java多线程闲聊(四):阻塞队列与线程池原理
- 开发日记-20190509
- android studio 插件版本号和gradle版本号对应关系
- GAN作用——在我做安全的看来,就是做数据拟合、数据增强