解题过程

将题目给出的exe文件拖入ida中,查看main函数。

分析函数的逻辑,发现用户需要输出一个字符串,存储到变量v9中。如果v9的值与v5的值相等则会打印unk_413e90中的值,否则打印aFlag_0的值。

查看两个输出的值:

可以看到如果输入正确的话会打印flag get,这说明flag存储在v5中。

查看v5的值,发现没有值:

仔细查看main函数发现第10行有一个存储操作,将一个变量的值存储到了v5中。v5的值是在main函数执行过程中才被传入的,因此之前找不到值就可以理解了。

查找xmmword变量中存储的值:

可以将变量的值转为ascii码,同时发现qword变量也可以转为ascii。

字符串值逆序即为flag:

DUTCTF{We1c0met0DUTCTF}

简单解法

因为大概知道flag是以字符串形式存储在某个变量中的,不是程序运行过程中生成的,因此可以直接用Linux或Mac下的strings命令直接求得所有字符串并查找ctf、flag等关键词。

总结

这是一道简单的逆向题,直接用strings时没啥可说的。用ida时只要知道题目中涉及到的存储函数,这个题目很好解决。当然了,除了前面说的方法,用ollydbg也可以解这道题。

有一个需要注意的点是,用ida解题时,最后给出的flag值是逆序的,这是受到了存储方式的影响。具体可以了解下大端存储和小端存储的区别。

攻防世界RE1 writeup的更多相关文章

  1. 攻防世界--re1

    练习文件下载:https://www.lanzous.com/i5lufub 1.使用IDA打开,进入main函数. 2.转为C代码 可以看到,输入v9之后,与v5比较,判断我们输入的flag是否正确 ...

  2. xctf攻防世界——crackme writeup

    感谢xctf提供学习平台 https://adworld.xctf.org.cn crackme有壳,脱壳部分见文章: https://www.cnblogs.com/hongren/p/126332 ...

  3. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  4. 攻防世界 WriteUp

    附:|>>>攻防世界-WEB-新手练习区<<<| WriteUp目录 01.|>>>baby_web<<<| 02.|>& ...

  5. 攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup

    攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup 题目介绍 题目考点 隐写术 摩斯密码 Writeup 下载附件是PDF文件打开,研究一 ...

  6. 攻防世界 Misc 新手练习区 ext3 bugku Writeup

    攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...

  7. 攻防世界 Misc 新手练习区 gif Writeup

    攻防世界 Misc 新手练习区 gif Writeup 题目介绍 题目考点 仔细联想 字符转换 Writeup 下载附件并打开 104张黑白图 发现是一堆黑色和白色的图片,按某种规律排列,猜想flag ...

  8. 攻防世界 Misc 新手练习区 坚持60s Writeup

    攻防世界 Misc 新手练习区 坚持60s Writeup 题目介绍 题目考点 java反编译 jd-gui 的使用 Writeup 下载附件并打开 kali执行命令 java -jar 9dc125 ...

  9. 攻防世界 Misc 新手练习区 give_you_flag Writeup

    攻防世界 Misc 新手练习区 give_you_flag Writeup 题目介绍 题目考点 gif图片分离 细心的P图 二维码解码 Writeup 下载附件打开,发现是一张gif图片,打开看了一下 ...

随机推荐

  1. Python中带参数的装饰器

    装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在 ...

  2. VBA变量(七)

    变量是一个指定的内存位置,用于保存脚本执行过程中可以更改的值.以下是命名变量的基本规则. 变量名称必须使用一个字母作为第一个字符. 变量名称不能使用空格,句点(.),感叹号(!)或字符@,&, ...

  3. 补充:Python安装

    需要安装Python2.7.Numpy和Matplotlib.由于Python不支持向下兼容,因此在Python3.×下你一定能正常运行Python2.×的代码.上述模块最简单的安装方法就是用软件包安 ...

  4. xposed 泛型参数怎么设置

    以下是hook一个方法,A(List<class>,bool b); 百度查了好多都没能解决,自己琢磨了挺久才搞定.直接用List.class就可以了,因为重载不能相同参数,所以List就 ...

  5. linux服务器忘记密码操作

    当重启镜像时候 看到这个界面的时候 按1 按1之后进入如下界面 红色区域有解释 按e是编译模式,我们按e OK 这里我们选择第二行按b 进入开发者模式,然后等待启动 然后更改密码

  6. 【Zookeeper】实现哨兵机制(选举策略)

    一.Master选举使用场景及结构 二.代码实现 2.1 Maven依赖信息 2.2 IndexController 2.3 MyApplicationRunner 2.4 ElectionMaste ...

  7. tornado 常见问题处理

    1 怎么获取从页面中的传值 使用 self.get_body_argument tornado的参数存储在self.request.body内,通过json以后就可以直接取值,当初我在前端使用angu ...

  8. 怎么读取properties文件和ini文件?

    一.读取properties文件: properties中的内容: server.ip = 127.0.0.1 server.port = 22 //原生java即可读取public static v ...

  9. IDEA 导入jar包

    项IDEA的项目中导入下载好的jar包: 在intelij IDEA 中,点击File-Project Structure,出现界面的左侧点击Modules,然后点击“+”. 然后找到你要导入的jar ...

  10. Image Processing and Analysis_8_Edge Detection:Edge and line oriented contour detection State of the art ——2011

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...