信息安全Reverse题解

目录:

      • no.1
      • 字符串
      • 一样的flag
      • mig
      • 亦或者尼个这个
      • 亦或这个亦或呢个
      • 大贝斯小贝斯都是贝斯
      • easy re1
      • 我的博客

no.1

这道题直接用ida打开就能看到。

字符串

这道题直接用ida打开一套连招Shift+F12,搜索字符就看到了,我大招还没放呢!哈

一样的flag

这道题应该是 BUUCTF Reverse 不一样的flag 的这道题
ida打开,一套连招就看到了伪代码,分析了一大通,就知道了你输入的是v6这个值。再看看最后:
信息安全Reverse题解_第1张图片

这是判断条件,
前面的代码我分析:
v6=1:–v4;
v6=2:++v4;
v6=3:–v5;
v6=4:++v4;
而v4,v5是什么呢,初值是个0;
那判断条件是个什么呢?????百度(哈哈)BYTE是字节的意思,解释将v8的地址里的值弄出来,(可以理解成强制转换)
信息安全Reverse题解_第2张图片

v8后面有个esp,也可以理解为地址,
前面的*((_BYTE *)&v8 + 5 * v4 + v5 - 41) == 49可以改
((_BYTE )[esp+40h] +5v4 +v5 -41)这个鬼东西,
((_BYTE )[esp+17h] +5v4 +v5 )合并下。
就可以了;
来来看看这这:相信你们不理解,如果学过了指针就理解了,这是个二维数组,我们认为它可能是立体储存的,但实际上它是线性储存的,v4之所以
5就是应为它是二维里的列,5就是一行5个。
然后再字符串里有一堆鬼东西.
data:00402000 0000001A C *11110100001010000101111#
看道后面的数字了吗?这就是地图哈哈。
走出这个地图就行了,那就是flag。

mig

这道题是真的难,这是攻防世界–maze的这道题,里面看的确实有点懵,刚开始没仔细看,看代码漏了点东西,学到了不少,放ida里常规操作,一套Shift+F12,Ctrl+x,OK,F5然后,就没然后了,,,
记住,看到数字按r会改成字符,这样我们能看道这到底是个啥,不知道是个啥,点进去看看,说不定会有所发现,简单分析下,就是个啥(我也不知道!!!)
最后终于明白了,发现了个while循环,然后在里面的if基本都会跳到LABEL_15这里:
信息安全Reverse题解_第3张图片
发现了有个sub_400690这个东西,点进去看看
信息安全Reverse题解_第4张图片
发现了三个变量,a1,a2,a3;
我们分别找找这三个变量,先跟踪a1看看:
在这里插入图片描述
发现了一堆数字,再结合上面的,我们可以猜测它是个很重要的东西,a2是个什么都没乘的,a3有个8乘,说明a1很大概率是个数组,再反过来看看上面的其它函数,发现了Oo.0这四个东西应该是控制方向的,具体往哪里还不知道,发现有两两重复的,
信息安全Reverse题解_第5张图片
信息安全Reverse题解_第6张图片
一个是加1,一个减1,这只是线性的,换成平面的发现上下还没找到。这时我们可以注意到SHIDWORD这个东西(它就可以理解成两个变量,一个自身,一个加上它,高位与低位)那就可以知道什么是上下,那个是左右了,
00111111
10001001
11101011
11001011
1001#001
11011101
11000001
11111111
如上就是地图,将我们分析的Oo.0这些控制方向的输入,按着地图走,就是flag了。

亦或者尼个这个

这道题都不错(感觉好难)
上来一套连招信息安全Reverse题解_第7张图片
按着我们以前的套路,先点点,找找,看看黄色字体,就是我们找到的,改成了字符串,下面一小堆,找到最关键的
if ( s[i] != (char)(*((_BYTE )&v7 + i % v6) ^ v8[i]) )它既然说否,那我们肯定是啊,也就是s[i]==(char)(((char)&v7+i%v6)^v8[i]))这个,这也是我们要找的flag,上代码:信息安全Reverse题解_第8张图片
信息安全Reverse题解_第9张图片
两种语言写的,运行就可以出现答案了。

亦或这个亦或呢个

这道题确实是个惊喜,或者是个惊吓,当然,还是一套操作打开代码信息安全Reverse题解_第10张图片
很简洁的代码,看黄色字体的flag,点进去看看
信息安全Reverse题解_第11张图片
发现另有一番天地,那我们来分析下,主要条件就是
v2 += *(_DWORD *)(4 * i + a1) ^ 0xF这个,0xF是15,_DWORD是个强制转换的,v2是个NHL[ItH??KPinchPF\P{z}jr这东西,它下面有个判断会误导人的(因为我就被迷了)然后写个脚本在这里插入图片描述
也许你会问i那里去了,这个点是我认为误导人的第二个点,刚开始我也加上了i,后来去了i对了,给了我一个惊吓,本以为不会对的!!!

大贝斯小贝斯都是贝斯

这道题也是刚开始找字符串
信息安全Reverse题解_第12张图片
找到了succed这个名词,那就点进去看看:
在这里插入图片描述
发现比较的是v31和v4,然后发现前面都是base加密,输入的是v33。而v31在上面是被改变的,v4没有被改变,所以v4即是我们想要的。
或者说,v33是flag,v33经过一系列加密变成了v31,然后v31与v4比较,这样就好理解了。所以将v4下面的一系列的字符串给base64解码。不过有一点要注意:就是他是v4=abcd的话,其实实际上v4=dcba。
信息安全Reverse题解_第13张图片
而从v4到v13就是我们的flag了,但我们需要将它们倒过来,在base64解密就行了。

easy re1

这道题怎么说,看的时候确实有点不懂(不过还是做出了来,哈哈)
信息安全Reverse题解_第14张图片
看到了吗?找到Congrats!这个恭喜(说明上面都是我们要找的东西)下面的看不看都行,因为下面的输出都是错误啊什么之类的,我在这迷了好久。
信息安全Reverse题解_第15张图片
在字符串的第一行有/lib64/ld-linux-x86-64.so.2这个东西,说明它实在Linus上的运行的,看了一下ida的远程调试(不会,太难了),所以就不去动态调试,那我们回来看看伪代码,发现了个重要的地方sub_40079C(i, (unsigned int *)&v4);这个函数应该就是我们要找的。
信息安全Reverse题解_第16张图片
在这里也有点迷人,我将所以的v什么r键换成字符,发现乱码,转十六进制也不知道下一步该干嘛!我就将十六进制转换成十进制,发现了它们是相同的,而我们要找的flag开头是AGCTF,所以我找了ascll码来对,发现了4854对着A,A与G差六个数,v4与v5也差六个值,后面%4919,说明4919是在ascll中对应的0.
来个脚本:
信息安全Reverse题解_第17张图片
这样答案就出来了。

我的博客

我的博客中还有点心得,欢迎各位大师傅们前来指点!!

你可能感兴趣的:(信息安全Reverse题解)