csaw2013reversing2 writeup

1、程序分析

题目是一个exe文件,提示运行即可拿到flag,但是窗口弹出之后会出现一堆乱码。这时候,我们把文件丢入IDA之中,看到程序大致流程如下。

主函数如图所示,流程比较简单,进入sub_40100看一下,我们看到sub_40100函数是一个加密函数。

还有一个函数sub_40102A如图所示:

2、IsDebuggerPresent函数与int 3中断

进入函数的时候,会有一个判断,sub_401020函数和IsDebuggerPresent函数返回值有一个不为零的时候,就会执行sub_401000函数,否则,就会跳过函数,直接执行后面的窗口函数。

分析程序,我们看到sub_401020的返回值恒为0。关于IsDebuggerPresent函数,文档上给出说明如下:

就是说,如果程序在调试状态下运行的话,返回值不为0,如果不在调试状态下运行,返回值就为0。程序运行时,他的返回值一定是0,所以程序直接执行了后面的窗口函数而没有执行加密函数。

在OD中打开程序,我们会看到一个指令:int 3。int 3是一个调试中断,这条指令可以使CPU中断到调试器。

2、修改指令

到这里,我们应该明白,要不显示乱码,就要改写程序数据流走向,让程序执行sub_401000这个加密函数。一开始可能会想直接改写sub_40102A的返回值,但是这个是有问题的,汇编代码eax清零的时候,会用xor eax,eax,这条指令只占用2个字节,但是mov eax,1的话,要占用5个字节。

所以,我们应该控制的,是几条跳转指令:

1、是if判断结束后的那一条跳转指令,我们让程序执行跳转函数,将jz short 002710EF改写为jmp short 00271096;

2、执行完加密函数之后,我们去执行窗口函数,jmp short 002710EF修改为jmp short 002710B9。

执行,就可以得到flag。

csaw2013reversing2 writeup的更多相关文章

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

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

  2. ISCC2016 WriteUp

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

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

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

  4. 爱春秋之戏说春秋 Writeup

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

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

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

  6. iscc2016 pwn部分writeup

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

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

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

  9. We Chall-Training: ASCII—Writeup

    MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...

随机推荐

  1. MySQL数据库企业集群项目实战(阶段三)

                              MySQL数据库企业集群项目实战(阶段三) 作者 刘畅 时间 2020-10-25 目录 1 架构拓扑图 1 1.1 方案一 1 1.2 方案二 2 ...

  2. 配置tomcat虚拟主机

    实例说明 本实例介绍如何配置tomcat的虚拟主机. 关键技术 关于server.xml中host这个元素,只有在设置虚拟主机是才会修改.虚拟主机是一种在一个Web服务器上服务多个域名的机制,对这个域 ...

  3. 2、nacos

    1.Nacos官方文档的说明已经很清晰了. https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html 2.前提条件 https://nacos ...

  4. kafka、rabbitmq、redis区别,各自适合什么场景?

    在应用场景方面 RabbitMQ RabbitMQ遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上,适合企业级的消息发送订阅,也是比较受到大家欢迎的. ...

  5. idea中IDEA优化配置

    进入IDEA 设置.两种方法: 1,File  -> Settings 2,工具栏有个工具按钮点下(假如没工具栏,View -> 选下Toolbar) 进入设置页面,从上到下,主要是 外观 ...

  6. <jsp:param>传递参数,出现乱码问题

    今天在学习<jsp:forward>和<jsp:param>时,用<jsp:param>传递参数时,出现乱码问题,部分代码如下: 1 <jsp:forward ...

  7. 2012年第三届蓝桥杯C/C++程序设计本科B组省赛题目 海盗比酒量 结果填空

    ** 一.题目 ** 海盗比酒量 有一群海盗(不多于20人),在船上比拼酒量.过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了.再打开一瓶酒平分,又有倒下的,再次重复- 直到开了第4瓶酒,坐 ...

  8. Docker部署Mysq集群

    1.PXC(Percona XtraDB Cluster) 速度慢 但能保证强一致性 适用于保存价值较高的数据 数据同步是双向的 在任一节点写入数据 都会同步到其他所有节点 在任何节点上都能同时读写 ...

  9. Python使用笔记001

    一.Pycharm小技巧 1.pycharm创建项目时,选择Python环境,不使用默认的虚拟环境 2.如何在pycharm中查看python版本 Files--Settings--Project I ...

  10. C语言:获取汉字的编码

    #include <stdio.h> #include <locale.h> #include <wchar.h> int main() { setlocale(L ...