刚学逆向很多都不懂,本题也是在看了

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相关推荐

  1. 实验二 Java基础语法练习-基本数据类型、运算符与表达式、选择结构

    一. 实验目的及要求 目的: (1) 掌握各种变量的声明方式 (2) 掌握Java的基本数据类型.运算符与表达式的使用方法. (3) 理解Java的程序语法结构,掌握顺序结构.选择结构程序设计方法. ...

  2. B-ICE-EDA/SOPC FPGA创新电子教学实验平台

    简介:北京革新创展科技有限公司B-ICE IEELS系列创新教学实验平台目前主推Intel Cyclone IV/V系列,标准配置如下:主机B-ICE-EDA/SOPC,核心板可选GX-SOPC-EP ...

  3. 【论文翻译】-- Clipper: A Low-Latency Online Prediction Serving System

    NSDI2017文章. Clipper:一个低延迟在线预测服务系统. 翻译内容不见得是逐词或逐句翻译,很多是个人理解着翻译的,有不合适的地方欢迎评论指出. 本文内容涉及体系结构&机器学习.本人 ...

  4. System Verilog 视频缩放图像缩放 vivado 仿真

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_46621272/article/ ...

  5. Linux四大安全实验二-基于实验楼平台的学习

    ShellShock攻击实验 前言 何为ShellShock 搭建环境 bash自定义函数 进行复现 深究源码 总结 前言 要理解这个实验可能需要一些set-uid程序的基础,详见我的上一篇博客 何为 ...

  6. java基础之——类的初始化顺序(转载)

    原文地址:http://www.cnblogs.com/chrischennx/p/3612295.html 由浅入深,首先,我们来看一下,一个类初始化有关的都有些啥米: 静态成员变量.静态代码块.普 ...

  7. JSON.NET 简单的使用

    JSON.NET(http://json.codeplex.com/)使用来将.NET中的对象转换为JSON字符串(序列化?),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?) 首先为 ...

  8. 编译原理(一)之词法分析

    词法分析 (1)参考附录1设计一个简单语言的词法分析程序,要求能够处理注释.换行回车.部分复合运算符(如>=). (2)设计并实现含多条简单赋值语句的语法分析程序,要求有一定的出错提示与错误恢复 ...

  9. pixel 6 root

    解锁bootloader 1. 登录账号 2. 进入开发者模式,打开 oem unlock 3. 连接电脑 adb reboot bootloader 4. 手机进入fastboot mode后 电脑 ...

  10. Pixel6 解锁bootloader

    解锁bootloader 1. 登录账号 2. 进入开发者模式,打开 oem unlock 3. 连接电脑 adb reboot bootloader 4. 手机进入fastboot mode后 电脑 ...

最新文章

  1. 大家眼中的桌面技术支持是什么样的?
  2. Boyang Tex上海帛扬时装面料有限公司
  3. 如何查看cplex的help文档_用摹客,写出更好的产品文档
  4. mysql 批量远程_【shell--批量远程MySQL,执行命令】-【工作总结】
  5. [ofbiz]设置任务计划(job),提示service_item已经传递
  6. mysql :完整性约束
  7. 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)
  8. OAuth认证原理及HTTP下的密码安全传输
  9. 洛谷——P2068 统计和
  10. 请推荐好的工作流产品
  11. 桥牌笔记:让敌方的Q、J、10、X只拿一墩的打法
  12. 华硕 固件 Linux内核,ubuntu 64位编译华硕AC1200G+固件
  13. CCRD_TOC_2008年第1期
  14. MSSQL存储过程调用 C#DLL
  15. C语言 数组插入 – 插入排序
  16. 华为云发布《云原生2.0架构白皮书》,GaussDB技术再升级
  17. loadrunner 集合点lr_rendezvous 规则以及操作使用
  18. debian linux 7 安装,Debian 7.0.0安装图解教程
  19. 在AD中添加logo
  20. 2021年江苏高考成绩查询时间,2021年江苏高考成绩什么时候出来 公布时间

热门文章

  1. 浅析关键词与搜索引擎之间不得不说的关系
  2. 网站内链的6大常见形式你了解多少?
  3. JAVA8 获取叶节点_Java找出所有的根节点到叶子节点的节点值之和等于sum 的路径...
  4. 服务器功率一般多少_单机柜供电能力提升后,选择1U服务器还是2U服务器?
  5. 动网 php v1.0 漏洞,动网(DVBBS)PHP论坛preview.php代码执行漏洞
  6. python五子棋人人对战_五子棋-人人对战
  7. Java多线程闲聊(四):阻塞队列与线程池原理
  8. 开发日记-20190509
  9. android studio 插件版本号和gradle版本号对应关系
  10. GAN作用——在我做安全的看来,就是做数据拟合、数据增强