发现一篇写得更好的: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的更多相关文章

  1. RCTF 2018线上赛 writeup

    苦逼的RCTF,只进行了两天,刚好第二天是5.20,出去xxx了,没法打比赛,难受.比赛结束了,还不准继续提交flag进行正确校验了,更难受. 下面是本次ctf解题思路流程 后面我解出的题会陆续更新上 ...

  2. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  3. ISCC2016 WriteUp

    日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...

  4. 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp

    洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...

  5. 爱春秋之戏说春秋 Writeup

    爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...

  6. 《安全智库》:48H急速夺旗大战通关writeup(通关策略)

    作者:ByStudent   题目名字 题目分值 地址 MallBuilder2 350 mall.anquanbao.com.cn MallBuilder1 200 mall.anquanbao.c ...

  7. iscc2016 pwn部分writeup

    一.pwn1 简单的32位栈溢出,定位溢出点后即可写exp gdb-peda$ r Starting program: /usr/iscc/pwn1 C'mon pwn me : AAA%AAsAAB ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. PHP - 多维数组

    多维数组指的是包含一个或多个数组的数组. PHP 能理解两.三.四或五级甚至更多级的多维数组.不过,超过三级深的数组对于大多数人难于管理. 注释:数组的维度指示您需要选择元素的索引数. 对于二维数组, ...

  2. UGUI 锚点

    今天我们来学习下UGUI的锚点, 他是做什么的呢?  基本上就是用于界面布局. 1. 1个控件对应1个描点. 2. 描点分成四个小叶片,  每1个叶片 对应 控件四边框的角点 3. 不管屏幕如何放大缩 ...

  3. Struts2+Spring集成合并

    前边单独总结了Struts2,Spring和Ibaits框架了,那么怎么结合使用呢?这次先来看一下Sturts2和Spring的集成合并.其实挺简单的,就是导入各自的jar包以及连接彼此的jar包,分 ...

  4. Word Amalgamation

    Problem Description In millions of newspapers across the United States there is a word game called J ...

  5. stagefright框架(六)-Audio Playback的流程

    到目前为止,我们都只着重在video处理的部分,对于audio却只字未提.这篇文章将会开始audio处理的流程. Stagefright中关于audio的部分是交由AudioPlayer来处理,它是在 ...

  6. MVC学习 (一)

    在学习MVC之前对asp.net MVC已经有了一些了解,但是还是有很多的疑问,接下来我慢慢来看书学习并带着问题写博客以作记录. 1.MVC是什么? 2.Asp.net MVC和传统的Asp.net ...

  7. c# 面相对象3-之继承性

    继承:类与类之间的关系(父子关系) 子类继承父类,那么子类就拥有父类的公共属性和方法一个子类只能继承一个父类,一个父类可以有好多子类子类对象可以直接转成父类,但父类只能转回对应的子类如果子类转成父类之 ...

  8. 一种获取spring环境上下文方法:SpringContextUtil

    获得spring里注册Bean的有好几种方法,这里介绍一种比较简单的方法: import org.springframework.beans.BeansException; import org.sp ...

  9. oracle学习-安装卸载

  10. C#导出Word文档开源组件DocX

    1.帮助文档,这东西找了很久,而且它版本很旧,还是英文,W8.1系统上打不开 http://download.csdn.net/detail/zuofangyouyuan/7673573 2.开源网址 ...