攻防世界 re -re1
一天一道ctf系列
这道题我们有两种解法,先说说第一种
第一种解法
我们先直接拖入ida
f5查看伪代码,如上图,可以分析出flag保存在v9中,然后再和v5比较,如果相同则输出aflag。所以我们可以猜测flag的值作为常量保存在了程序内部,那么我们直接查看字符串。
为啥找不到呢 ?
一脸懵逼的我打开了百度搜索,看到了这个大佬的文章
大概意思是ida在反编译过程中采用的是下降法,这种方法很少会误将数据当作代码进行反编译,但是这次很不幸,我们的flag呗反编译了,所以解决方法是:在IDA打开文件时选择binary file,在此模式下IDA不会进行反编译,此时再打开strings界面就可发现flag。
开始实践:
成功找到
第二种方法
正常流程进入main函数,发现flag输入v9中且和v5比较,所以我们推测flag存储在v5中,通过源码追踪v5。
可以看到,xmmword_413E34赋值给了v5,所以xmmword_413E34就是我们要找的值,双击进去,得到了一串数字。
将数字转化为字符串
因为计算机采取的是小端存储,所以我们倒着输入就成功了
get flag!
DUTCTF{We1c0met0DUTCTF}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 z1inのblog!
评论