攻防世界 REVERSE 新手区/re1

攻防世界 REVERSE 新手区/re1

先看题,题目描述没啥有用信息,直接下附件

攻防世界 REVERSE 新手区/re1_第1张图片

打开

攻防世界 REVERSE 新手区/re1_第2张图片

先随便输个数

攻防世界 REVERSE 新手区/re1_第3张图片

估计是个字符串匹配的题,接下来用IDA32位打开

攻防世界 REVERSE 新手区/re1_第4张图片

看到有个strcmp函数,比较v5和v9,然后判断v3,根据v3给出相应的结果。这时我看到了个printf(aFLAG),满怀欣喜地点进去看了

攻防世界 REVERSE 新手区/re1_第5张图片

啊?这么快就得到答案了么?(并没有。。)

攻防世界 REVERSE 新手区/re1_第6张图片

看下描述,和运行的那个程序一样结果,看来是假的

攻防世界 REVERSE 新手区/re1_第7张图片

那么那个else后输出的就应该是代表正确的答案了,跟进unk_413E90

攻防世界 REVERSE 新手区/re1_第8张图片

看到flag get,证明没错

攻防世界 REVERSE 新手区/re1_第9张图片

之后就从判断条件开始入手v9是要输入的数,接下来就是找找v5的数值是多少了,直接点击v5跳转,看到除了xmmword就没别的了,那就返回。

攻防世界 REVERSE 新手区/re1_第10张图片

看到开始有个函数包括了v5和xmmword,应该是将xmmword_413E34的值赋给v5。

在这里插入图片描述

跟进查看一下

攻防世界 REVERSE 新手区/re1_第11张图片
在这里插入图片描述

xmmword的值已经出来了:那么v5的值就是 3074656D30633165577B465443545544h

v5应该是16进制表示的,看下strcmp函数,有个将v5转换为字符串的函数,

攻防世界 REVERSE 新手区/re1_第12张图片

百度一下16进制转字符串

攻防世界 REVERSE 新手区/re1_第13张图片

这串字符0tem0c1eW{FTCTUD看着不像flag,但是在中间看到了个FTC,再看下题目来源

在这里插入图片描述

这不就是flag翻转过来了嘛,百度了个文字倒序网站,翻转一下

百度了一下找到了这个:“汇编里面存储字符是采用小端格式”

攻防世界 REVERSE 新手区/re1_第14张图片

啊,天真的我以为得到了flag,直接去提交了
攻防世界 REVERSE 新手区/re1_第15张图片

然后,,,试了几次都不正确。。。。。看下里面的字符串,可以看出是串英文:Welcometo,那应该是少了东西在后面,但是也没看到有啥拼接字符串的函数了哇。。。。然后我看到了v6这串字符

攻防世界 REVERSE 新手区/re1_第16张图片

跟进去看下

在这里插入图片描述

诶?好像没有哪个地方用了这串字符,那转下字符串试试

攻防世界 REVERSE 新手区/re1_第17张图片

然后得到了这串字符: }FTCTUD

嗯?这不就是后半段字符么,拼在之前得到的字符串前面(因为是小端格式排列,所以要拼到前面): }FTCTUD0tem0c1eW{FTCTUD

再次翻转,得到flag: DUTCTF{We1c0met0DUTCTF}

攻防世界 REVERSE 新手区/re1_第18张图片

再输入那个程序验证一下

攻防世界 REVERSE 新手区/re1_第19张图片

但是真的不知道在哪把v6拼到v5前面去了…

你可能感兴趣的:(#,攻防世界,Reverse,字符串)