一天一道ctf系列

攻防世界re1

这道题我们有两种解法,先说说第一种

第一种解法

我们先直接拖入ida

在这里插入图片描述

f5查看伪代码,如上图,可以分析出flag保存在v9中,然后再和v5比较,如果相同则输出aflag。所以我们可以猜测flag的值作为常量保存在了程序内部,那么我们直接查看字符串。

在这里插入图片描述

为啥找不到呢 ?

一脸懵逼的我打开了百度搜索,看到了这个大佬的文章

image-20210615110705664

大概意思是ida在反编译过程中采用的是下降法,这种方法很少会误将数据当作代码进行反编译,但是这次很不幸,我们的flag呗反编译了,所以解决方法是:在IDA打开文件时选择binary file,在此模式下IDA不会进行反编译,此时再打开strings界面就可发现flag。

开始实践:
image-20210615111021666

成功找到

第二种方法

正常流程进入main函数,发现flag输入v9中且和v5比较,所以我们推测flag存储在v5中,通过源码追踪v5。

img

可以看到,xmmword_413E34赋值给了v5,所以xmmword_413E34就是我们要找的值,双击进去,得到了一串数字。

img

将数字转化为字符串

img

因为计算机采取的是小端存储,所以我们倒着输入就成功了

get flag!

DUTCTF{We1c0met0DUTCTF}