RCTF Re300 Writeup
发现一篇写得更好的:http://insight-labs.org/?p=2009
程序要求输入一个flag。拿ida加载后,发现是Upx壳,脱壳后加载入ida进行分析。定位到输入flag的地方,如下图:

在od中在0x401455处下断点,执行到此。继续f8执行下去,发现程序来到一块不在程序代码段的用户空间。如下图:

这一段执行完后,程序在修改代码段的内容,是动态代码修改。修改完成后,跳转到0x0040189e去执行。如下图:

我就觉得是一个壳,而0x0040189e则是OEP。因此,我使用OllyDump对程序进行脱壳,并使用ImportRec进行导入表的修复。修复成功后,成功得到一个exe。


得到exe后,我尝试运行,发现不能运行,因此我就拖入ida进行分析。发现程序在动态修改代码段的内容,而代码段是不能执行的,因此不能运行。不过对于静态分析还是不错的,在里面我清晰地看到程序的算法。

将数据调整完顺序后,会与一个字符串比较,如果相同,则成功,否则,则失败。

Hexlify(char *s, char *d, int len):将s表示为16进制放在d中,d的长度为s的两倍。
Xor(char *source, int len) :source里的每两个字符是一个字符的16进制表示,将source里的每两个字符与第一第二个字符比较,如果都相等,这两个字符分别异或0x19和0x20,如果都不相等则将字符异或0x18。
Core_algo()为一个递归算法,将产生打乱后的顺序。
Disorder(0)则根据core_algo产生的打乱后的顺序将final的顺序打乱。
我发现只有两个函数对final这个字符串数组进行了操作,也就是说打乱的顺序与输入的数据没有关系。我将core_algo执行完后,把内容从40adf8开始的0x510字节dump出来,并写了个脚本拿到了打乱后的顺序。
因此,可以从后向前推出flag。脚本如下:




RCTF Re300 Writeup的更多相关文章
- RCTF 2018线上赛 writeup
苦逼的RCTF,只进行了两天,刚好第二天是5.20,出去xxx了,没法打比赛,难受.比赛结束了,还不准继续提交flag进行正确校验了,更难受. 下面是本次ctf解题思路流程 后面我解出的题会陆续更新上 ...
- 2016第七季极客大挑战Writeup
第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...
- ISCC2016 WriteUp
日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...
- 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp
洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...
- 爱春秋之戏说春秋 Writeup
爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...
- 《安全智库》:48H急速夺旗大战通关writeup(通关策略)
作者:ByStudent 题目名字 题目分值 地址 MallBuilder2 350 mall.anquanbao.com.cn MallBuilder1 200 mall.anquanbao.c ...
- iscc2016 pwn部分writeup
一.pwn1 简单的32位栈溢出,定位溢出点后即可写exp gdb-peda$ r Starting program: /usr/iscc/pwn1 C'mon pwn me : AAA%AAsAAB ...
- We Chall-Training: Encodings I -Writeup
MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...
- We Chall-Encodings: URL -Writeup
MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...
随机推荐
- JavaScript 轮播图
这是我自己做的一个轮播图,大家可以看看 ,我还没进行优化.有改进的地方可以私聊 布局什么的你们自己搞定吧 <div class="slider" id="circl ...
- Selenium模块化
概述 高内聚低耦合是软件设计的一个基本原则. 内聚:从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事.它描述的是模块内的功能联系. 耦合:各模块之间相互连接的一种度量,耦合强弱取决于模块 ...
- JavaScript面向对象精要(一)
数据类型 在JavaScript中,数据类型分为两类: 原始类型:保存一些简单数据,如true.5等.JavaScript共同拥有5中原始类型: boolean:布尔.值为true或false num ...
- Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7884628 前面我们已经学习过Android应 ...
- 修改vim中的tab为4个空格
记录一下,避免用时还得搜........ 1.临时修改 在vi中,set tabstop=4 或 set ts=4 2.永久修改 vi --version 查看要修改的文件 如果是vim的话,修改~/ ...
- 【Java基础】foreach循环
从一个小程序说起: class lesson6foreach { public static void main(String[] args) { int array[]={2,3,1,5,4,6}; ...
- ng-class用法
在angular中为我们提供了3种方案处理class: 1:scope变量绑定.这种方案不推荐,因为scope里最好处理业务逻辑,不去管渲染的事.2:字符串数组形式.3:对象key/value处理. ...
- 让资源可以下载a
第一种方式------不存在任何兼容性 <a href='x.zip'>下载</a> 将要链接的资源进行打包即可 第二种方式----存在兼容性,目前只有Chrome 和Fire ...
- 【转】关于ios10中ATS的问题
原文连接:https://onevcat.com/2016/06/ios-10-ats/ WWDC 15 提出的 ATS (App Transport Security) 是 Apple 在推进网络通 ...
- 003 assert简述