moctf 逆向第一题:SOEASY

这个是个 64 位的软件,OD 打不开,只能用 IDA64 打开,直接搜字符串(shift+F12)就可以看到

moctf 逆向第二题:跳跳跳

这个题当初给了初学逆向的我很大的成就感,当时就学了改指令爆破,根本不会分析算法,这就能做出一道题还是很舒服的

打开程序,是个猜数游戏

载入 OD 搜索字符串

双击跟过去看看,很清晰了,那个 jnz 是关键,只要不让这个跳转实现就正确

那就直接把他 NOP 掉吧

保存出来

随便输入,最后还是可以成功出来 flag

这个 falg 是 base64 加密的,之前在这里提交好多次总是不对,之后试了试才发现编码了

moctf 逆向第三题:暗恋的苦恼

当时可是费了好大劲才看懂这个伪代码的 (不知道现在还看不看得懂),这次用 OD 分析的还算顺利,但是也花了一个多小时……

先来看一下流程:

载入 OD,通过字符串找到获取输入的地方,在下图箭头所指的地方程序运行起来等待输入

可以看到,经过一个 CALL 之后出现了加密后的字符串,那就跟进这个 CALL 看一下

之后还得再进一个 CALL 才能发现程序算法 (程序是一个字一个字加密的刚开始会把输入的全部转换成大写)

程序算法:

1. 逐个取字符,转成大写的,然后用大写形式的 ASCII 码减去 41 (十六进制) 得到结果 (十六进制)

2. 然后用密钥的大写形式加上得到的结果

PS. 这里做了一些处理,如果加上以后结果超出了大写字母 Z (0x5A),那么会再减去 19 (十六进制)

然而还有个问题,我发现给出的密文长度是比密钥长的,那怎么办?记得之前看的 writeup 说密钥循环使用的,即:ilovemoctfilovemoctf,这样一直排下去,不管多出来多少密文都可以加密

为了验证这个问题,我做了一个实验

这样输入的明文个数比密钥多一个,而且多的是与第一个一样的,我们看一下是不是按照那样循环是用的

加密结果让我很欣慰,证明我记性还不错

参考脚本,这或许会帮你更好的认识这个程序的流程

moctf 逆向第四题:crackme1

打开后啥都不要求输入,出现一串字符,说是 flag,但是每次打开都不一样

载入 OD,通过字符串找到

但是因为不知道该怎么分析,干脆直接段首下断,然后单步跟踪

找到算法部分,算法:

1. 逐个取定义好的 “2410488”

2. 乘以 2 后减去 60 (十六进制)

3. 除以 4 之后加上 3

4. 对 10 取余,得到结果

在刚开始一直不知道这里的数是怎么出来的,在心里把 [edx+edx-0x60] 当作一个地址了,后来发现,这他妈的不是存放的刚赋值的字符嘛!!

写出脚本,跑出 flag:4533577

moctf 逆向第五题:crackme2

通过字符串定位获取输入的位置

然后按步跟踪找到加密函数

步入加密 CALL,分析算法:

1. 依次取输入的字符串

2. 从 6 开始,与输入的字符串进行异或

3. 异或结果与定义好的字符串进行比较

红框圈出来的是定义好的字符串

0<1<>;?8:%w!##&#q./,x(,((

下面的那个 CALL 是进行对比的

可以看到我们输入的进行加密后是 7F,而规定的应该是 31

写出脚本跑出应该输入的字符串

输入正确的后在进行测试,nice !!!

然而,这并不是 flag,需要将它转换成字符串形式

ps. 这是 N 个月前在公众号发的文章,转过来博客,主要是希望能够让更多人看见

【二进制】【WP】MOCTF逆向题解的更多相关文章

  1. [CodeForces - 1225C]p-binary 【数论】【二进制】

    [CodeForces - 1225C]p-binary [数论][二进制] 标签: 题解 codeforces题解 数论 题目描述 Time limit 2000 ms Memory limit 5 ...

  2. 2016女生专场 ABCDEF题解 其他待补...

    GHIJ待补... A.HUD5702:Solving Order Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3276 ...

  3. Jarvis OJ部分逆向

    Jarvis OJ部分逆向题解 很久没有写博客了,前天上Jarvis OJ刷了几道逆向,保持了一下感觉.都是简单题目,写个writeup记录一下. easycrackme int __cdecl ma ...

  4. CTF入门记录(1

    (https://ctf-wiki.org) 00 基础了解 CTF简介 (wolai.com) 00-1 CTF题目类型 Web 大部分情况下和网.Web.HTTP等相关技能有关. Web攻防的一些 ...

  5. 深入理解JavaScript系列:为什么03-0.2不等于0.1

    五一宅家看书,所以接着更新一篇文章. 今天讲一下为什么03-0.2不等于0.1这个问题. 有点标题党的味道,在JavaScript中,当你试着对小数进行加减运算时,有时候会发现某个结果并非我们所想的那 ...

  6. Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

    在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...

  7. Leetcode笔记(整理中.......)

    1.树的层序遍历 使用两个List 数组 或者 两个queue队列,交替进行,将遍历到的一层放在第一个里面,之后再将遍历到的第二层放在第二个里面. 2.将一个无符号整数的二进制表示形式逆向输出 需要将 ...

  8. Mysql高可用

    一.二进制日志 二进制日志,记录所有对库的修改,如update.修改表结构等等 需要开启二进制日志的原因: 1.主从复制都是通过二进制日志进行.主库写二进制日志,传输到从库,从库replay二进制日志 ...

  9. 【CodeForces】913 C. Party Lemonade

    [题目]C. Party Lemonade [题意]给定n个物品,第i个物品重量为2^(i-1)价值为ci,每个物品可以无限取,求取总重量>=L的最小代价.1<=30<=n,1< ...

随机推荐

  1. [bzoj1042]硬币购物

    先预处理出没有上限的方案数,然后容斥,然后将所有东西的范围都变为[0,+oo),即可用预处理出的dp数组计算 1 #include<bits/stdc++.h> 2 using names ...

  2. [noi1755]Trie

    定义S对应的数组为$a_{i}=\min_{0\le j<i,S_{j}=S_{i}}i-j$,特别的,若不存在j,令$a_{i}=i$,那么容易发现存在双射关系就意味这两者对应的数组相同 因此 ...

  3. 抽象类和接口的区别详解、package和import

    1.抽象类和接口以及抽象类和接口的区别. 1.1.抽象类的基础语法(见昨天笔记) 1.2.接口的基础语法 1.接口是一种"引用数据类型". 2.接口是完全抽象的. 3.接口怎么定义 ...

  4. 程序员需要达到什么水平才能顺利拿到 20k 无压力?

        程序员要拿到20k,应该达到什么水平? 1 熟悉增删改查技能,熟悉项目开发相关流程和技能. 2 能解决基本问题,分布式或比较深的问题,太难的不会不要紧,但常规的应该有项目经验. 3 简历好看些 ...

  5. Java编程之学习技巧

    **本人博客网站 **IT小神 www.itxiaoshen.com 找到技术点 首先得知道自己要学习技术是什么?不管是来自同事.技术大牛推荐还是通过搜索引擎得到,或者另有出处如.技术交流群.技术论坛 ...

  6. 深入理解Redis 数据结构—简单动态字符串sds

    Redis是用ANSI C语言编写的,它是一个高性能的key-value数据库,它可以作用在数据库.缓存和消息中间件.其中 Redis 键值对中的键都是 string 类型,而键值对中的值也是有 st ...

  7. Atcoder Grand Contest 013 E - Placing Squares(组合意义转化+矩阵快速幂/代数推导,思维题)

    Atcoder 题面传送门 & 洛谷题面传送门 这是一道难度 Cu 的 AGC E,碰到这种思维题我只能说:not for me,thx 然鹅似乎 ycx 把题看错了? 首先这个平方与乘法比较 ...

  8. git创建项目,代码仓库

    1.首先在服务端远程创建仓库 mkdir  project.git cd  project.git git  --bare init 2.在本地创建项目推送到远程服务端仓库 mkdir  myproj ...

  9. mysql事务控制语言TCL

    Transaction Control Language 事务控制语言 事务:一个或一组sql语句组成一个执行单元,这个执行单元作为不可分割的整体执行.如果某个语句执行错误,整个单元回滚到最初的状态. ...

  10. 云原生时代的 APM

    作者 | 刘浩杨 来源|尔达 Erda 公众号 ​APM 的全称是 Application Performance Management(应用性能管理),早在 90 年代中期就有厂商提出性能管理的概念 ...