re部分
0x01.Writeup-RE-CM_2
题目:

解题思路:
1.这个是经过xor的,王老师提示说用xortool,于是放进kali,装好之后执行
xortool CM_2.exe -b,
0.out变为PEexe,于是放进IDA32得到flag。

0x02.Writeup- RE-CM_3
解题思路:
1.拿道题之后直接丢进DIE扫一下,如图,可以看出是32位,于是用32位IDA打开。

2.shift+F12看字符串,看到敏感字符SYC{%s}于是点进去,于是知道关键函数是sub_45BFF0。
3.分析函数sub_45BFF0。

上面这张图是关键代码,不难发现,这是将byte_52E000数组里的元素转换位置。然后看到上有一串数字,如右图,这些数字是被当做byte_52E000数组的下标从而实现转换byte_52E000数组元素位置。
接下来需要知道byte_52E000数组里的元素,双击即可看到。

4.分析清楚后接下来写脚本,由于需要取数组下标,我用c写的脚本,如下

得到flag,大功告成!

0x03.Writeup- RE-APK_1
题目:

于是知道如果找到password就能过这题。
解题思路:
1.用Apktool打开,

2.


可以看到,username = ‘SycGeek2017’,
一开始以为Password就是username的base64编码“U3ljR2VlazIwMTc=”,交了一发不对。
然后仔细看了看,发现还有个re函数,可以很快的了解到re函数就是一个倒置字符串的函数,于是password = “=cTMwIzalV2Rjl3U”。
得flag:SYC{=cTMwIzalV2Rjl3U }
0x04.Writeup- RE-Linux_1
题目:

解题思路:
1.还是拿IDE扫一下,
gcc((Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609)[executable AMD64-64]
2.用IDA64位打开,shift+F12看字符串,如图

点进去,看到它所在函数为sub_4009AE,点进去,F5查看伪代码。
3.函数sub_4009AE

一开始看到这个函数有点懵逼,然后点了点里面跳转的函数,惊喜的看到一个非常“好看”的,如下图

根据这个函数把a1数组的每一个元素找到,即L1nux_1s_51mple,找到flag啦。
0x04.Writeup- RE-Convolution
题目:

解题思路:
1.丢进IDE看文件类型,如图

2.IDA32位打开,看字符串,如图

点进去,F5查看伪代码。
3.从后往前看。
首先,从下面这段代码可以看出,若v6==0,则输出Yes,那么

就是说v8要和unk_41E8B0这个数组完全匹配。
继续往上看v8是如何赋值的。
很容易看到,下图的代码为关键,它的作用是将v9与byte_41C658的元素异或之后再赋给v8,可以看到byte_41C658是已经有值的,

那么接下来看v9,如下图,知道v9是我们输入的字符串。

现在可以开始逆算法了,从上面的关键代码的图可以看出,
V8[i+j] =( v9[i] ^ byte[j] )求和。为了理清这个关系,我写了个脚本,结果如下图。

通过上图可以很快理清其中的关系,通过第一行我们可以直接得到v9[0],通过第二行可以借助第一行v9[0]算出v9[1],以此类推,v9的全部元素都可以得到。
写输出flag的脚本:
byte_41C658数组的元素如下图,别忘了第一个21h。

V8的元素由于过长不在这里显示。
关键代码如下图

得到flag

总结:这个题的难度主要在分析v8,v9,byte之间的关系,如果能理清这个的话相信得到flag是很容易的,还有就是在找v8和byte元素的时候不要忘了第一个!!!比如说下图

我就是一开始忘了byte数组的第一个导致脚本崩了。。。然后第三天重新看的时候才发现。。。
re部分还有两道题,比赛的时候没写出来。。。
作者: LB919
出处:http://www.cnblogs.com/L1B0/
该文章为LB919投入了时间和精力的原创;
如有转载,荣幸之至!请随手标明出处;
随机推荐
- spring boot / cloud (十九) 并发消费消息,如何保证入库的数据是最新的?
spring boot / cloud (十九) 并发消费消息,如何保证入库的数据是最新的? 消息中间件在解决异步处理,模块间解耦和,和高流量场景的削峰,等情况下有着很广泛的应用 . 本文将跟大家一起 ...
- oracle11G r2 静默安装单实例(待优化版)
测试环境:centos 6.9 X64 mini 版 oracle版本:11G r2 Oracle软件包:db_112040_Linux-x86-64_1of7.zip;db_112040_Linux ...
- PE格式第八讲,TLS表(线程局部存储)
PE格式第八讲,TLS表(线程局部存储) 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶复习线程相关知识 首先讲解 ...
- laravel框架包资源分享
最近发现laravel框架包很难下,楼楼之前下了两个版本,分享一下,希望对大家有所帮助.laravel-v5.2.15 链接: https://pan.baidu.com/s/1qYyhbFe 密码: ...
- Python 初学者 入门 应该学习 python 2 还是 python 3?
许多刚入门 Python 的朋友都在纠结的的问题是:我应该选择学习 python2 还是 python3? 对此,咪博士的回答是:果断 Python3 ! 可是,还有许多小白朋友仍然犹豫:那为什么还是 ...
- vue 父组件传递子组件事件
在开发中,碰到一个需要从父组件传入方法,子组件点击触发,说白了就是,把方法传入给子组件调用 <el-col v-for='data in spreadFormat.icons' class=&q ...
- LINUX 笔记-mv命令
常用参数: -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖 -i :若目标文件已经存在,就会询问是否覆盖 -u :若目标文件已经存在,且比目标文件新,才会更新
- nodejs运行前端项目
有时候我们会创建一些小项目,只有几个简单html,没有引入一些前端框架,也没有使用webpack,那我们要如何让代码在我们本地跑起来呢? 当然是有很多种方法,IIS.wampserver等等好多都可以 ...
- nova创建虚拟机源码分析系列之六 api入口create方法
openstack 版本:Newton 注:博文图片采用了很多大牛博客图片,仅作为总结学习,非商用.该图全面的说明了nova创建虚机的过程,从逻辑的角度清晰的描述了前端请求创建虚拟机之后发生的一系列反 ...
- visual filters 滤镜 ie
滤镜ie9开始就废弃了,用来对ie4-8实现一些多媒体动画之类的效果.可以添加到标准的HTML控件上,例如text,图片 包含:1.界面滤镜 (Procedural Surfaces)2.静态滤 ...