title: 攻防世界 Mysterious
date: 2021年8月11日 20点30分
tags: 攻防世界
categories: 攻防世界
这个题真是差点就自己解出来了,卡在了最后一步,看了别人wp之后,有点懊悔。
先讲讲自我分析的过程
自我分析
1、PE分析
32位。
2、IDApro
IDA之前,先看看这个软件,打开发现是一个弹窗。
随便输入一串字母,发现点不动。直接上手IDA
(1)shift + F12查看字符串窗口
这里看到,有一个well done,和Buff3r_0v3rf|0w,我分析的时候,是看的Buff3r_0v3rf|0w,这两个一样的
(2)ctrl + x交叉引用
(3)F5反汇编
这里,也是百度了好几个函数。
我分析到这里的时候,我知道是拼接字符{Source_Buff3r_0v3rf|0w}这个形式,但是Source我不知道是什么,可以看到,itoa函数里面有Source,百度一波,说的是这个函数是将,字符串转为整型数的。后面的那个10,是十进制的意思,value是欲转换的数据。
而value = v4 + 1;
v4 = atoi(String);
以为关键地方在这个函数中,百度一波,发现atoi也是将字符串转为整型数的函数。
跟进去之后,是一堆看不太懂的东西。
一开始,准备硬着头发分析这堆代码,但是我觉得应该没这么难。就先放一边了。
又去查了查上面的几个函数
发现没什么用,又查了一下后面的函数,发现还是没什么用。
思索一会之后,还是放弃了,查看了大哥的wp,顿时懂了。
查看大哥的wp
1、不太一样的地方
首先,我观察网上的wp,他们用的IDA反编译得到的伪代码,跟我的IDA反编译出来的不太一样。
这是网络上的
可以观察到,第一个地方就是我的IDA那里,没有v5这个东西,我的是Source,然后第二个地方,就是在if语句里面,他们的v4 = 123,我的v4 = 122.第三个地方是他们的IDA分析if语句里面xyz的时候,是v12,v14,v13,我的是string【3】,string【5】,string【4】.
2、上帝视角分析
其实当我站在上帝视角的时候,整个题已经通了。
我从一开始就忽略了if语句里面给的条件,我看到了string【3】,string【5】,string【4】,是xzy,我也变成了xyz。但是当时没想到,这是输入到弹窗里面的东西,站在上帝视角,可以看到if语句里面的条件是
122xyz,把这个输入到弹窗中。
得到flag。
知道flag之后,再来分析这个代码,
这里可以看到,v4 = 122;而value = v4 + 1;也就是value = 123,而且这个itoa函数,就是将字符串转为整型数的,value是欲转换的数据,目标是Source,也就是Source = 123;然后拼接字符
也就是flag{123_Buff3r_03rf|0w},就得到了flag了。
总结
这个题最关键的地方,if语句里面的条件,就能得到flag。自己为什么不会做。
第一,Source是关键,itoa函数,当时也没注意value,导致卡在了Source,value = v4 +1 跟if语句里面的v4 = 122;没连接起来,导致value这里脱节,Source就跟着脱节。这里脱节之后,想法就到了v4 上面去了,一开始以为关键之处在v4 = atoi(String)这个地方,跟进之后,也确实有类似加密的代码。还准备分析一波。
其实还是自己想法简单了,题做的少了。继续加油。