攻防世界(新手篇)

作为刚刚进入reserve的小白,这几天在攻防世界的一些解题

no_strings_attached

一看没有exe,估计是linux的文件了,扔进C32Asm里
攻防世界(新手篇)_第1张图片
果然elf文件

先用扔进ida分析,发现主要函数authenticate,找到他的地址攻防世界(新手篇)_第2张图片
OK,接下来就是扔到linux的gdb里面分析啦(这里我用的是peda显示的更方便点)
攻防世界(新手篇)_第3张图片
用b来下断点,b*0x08048708,然后r运行,n单步往前走
攻防世界(新手篇)_第4张图片
断点指令reg info查看寄存器攻防世界(新手篇)_第5张图片
用x指令查看0x282,x/282x &eax
攻防世界(新手篇)_第6张图片
这便是数据,copy出来通过python转码既得flag
在这里插入图片描述
在这里插入图片描述

csaw2013reversing2

首先终于是一个exe文件,但是我一直打不开,而且不容易动态分析,所以这里就只讲静态分析了
扔进ida,找到main函数在这里插入图片描述
发现dword409B10提供了数据,猜测应该是源数据
攻防世界(新手篇)_第7张图片
发现sub_401000是变形函数,就是源数据和提供的一个数据进行抑或
dword_409B38便是提供数据
在这里插入图片描述
用python写出代码
攻防世界(新手篇)_第8张图片
得到flag
在这里插入图片描述

getit

静态分析
放入ida,查看到中心函数
攻防世界(新手篇)_第9张图片
意思就是根据index值得奇偶来判断该值ord是+1还是-1

s的值也已经给了,如下图
在这里插入图片描述
写出python脚本就行

a=("c61b68366edeb7bdce3c6820314b7498")
for i in range (0,32):
    if(i%2!=0):
        print(chr(ord(a[i])+1),end='')
    else:
        print(chr(ord(a[i])-1), end='')

在这里插入图片描述

python-trade

这道题比较简单,用py反编译器用一下就行,下载地址http://sourceforge.net/projects/easypythondecompiler/?source=directory
反编译结束后,得到代码
攻防世界(新手篇)_第10张图片
只要倒着推先base64解码,再-16,和32异或即可
攻防世界(新手篇)_第11张图片
这里最好用python软件直接base64解码,不要用外部网站,不然最后结果会差一点点,具体情况为啥我也不知道,正能猜测base64解码的代码不同吧
最后得到flag
在这里插入图片描述

maze

这道题在做的时候完全摸不清头脑,主要还是自己的思路太窄了吧,很有趣的一道迷宫题
首先ida静态分析,代码很多,很烦,但是要有耐心,一步一步来
第一是在判断密码位是否24,开头是否为 nctf{ ,结尾是否为 }
在这里插入图片描述
这时候,你会发现,有一段代码比较类似,是平行出现的,这就是在迷宫里的上下左右的四个动作
攻防世界(新手篇)_第12张图片
四个函数sub_400650\sub_400660\sub_400670\sub_400680是+1或-1的动作
v9是一个二维数组,用来控制上下和左右这两种方向的。
两种可能:1.v9代表横向、&v9+1代表竖向2.v9代表竖向、&v9+1代表横向
假设v9代表竖向,则"."上"0"下"o"右"O"左
根据流程图找到要求的迷宫攻防世界(新手篇)_第13张图片
根据call sub_400690得出迷宫分布规律是8个字符一行
在这里插入图片描述
然后就是本人的方法了
在Excel里面画出来,简单易懂
攻防世界(新手篇)_第14张图片
根据道路得出代码为:
o0oo00O000oooo…OO
加上外壳flag便得到了:
nctf{o0oo00O000oooo…OO}

你可能感兴趣的:(逆向题目练习)