BUUCTF Reverse 逆向方向 1-8题 详解wp

目录

easyre

reverse1

reverse2

内涵的软件

新年快乐_脱壳

xor

helloword_安卓

reverse3_base64


 觉得这篇文章不错的话就收藏、点赞、评论、关注我吧~

相关推荐:

9-16题详解博客 看这里→ BUUCTF逆向9-16题wp

逆向工具下载  点这里→ 爱盘 - 在线破解工具包

逆向入门博客  看这里→ 逆向入门规划

easyre

使用exeinfo工具查看文件信息

BUUCTF Reverse 逆向方向 1-8题 详解wp_第1张图片

使用IDA 64位打开文件,再使用Shift+F12打开字符串窗口,发现flag字符串

BUUCTF Reverse 逆向方向 1-8题 详解wp_第2张图片

双击跳转到字符串在汇编代码中的存储地址

点击字符串下方注释中的跳转链接,即可跳转至引用它的函数对应的汇编代码处

BUUCTF Reverse 逆向方向 1-8题 详解wp_第3张图片

按F5反汇编,生成对应汇编代码处的C语言伪代码

BUUCTF Reverse 逆向方向 1-8题 详解wp_第4张图片

分析代码。直接观察可知flag为代码中所示字符串

reverse1

BUUCTF Reverse 逆向方向 1-8题 详解wp_第5张图片

根据字符串值,找到主函数位置

BUUCTF Reverse 逆向方向 1-8题 详解wp_第6张图片

分析代码

由代码①得:用户需要输入字符串Str1,如果与Str2比较相同,则会提示flag正确。说明Str2中存储的字符串就是flag。点击代码中Str2,跳转至对应存储内容。

代码②上方代码不影响字符判断,所以可不用分析。

由代码②得:在for循序中遍历字符串Str2,(按R键,将数值转换为对应的ASCII码字符)

BUUCTF Reverse 逆向方向 1-8题 详解wp_第7张图片

并将字符串中的“o”替换“0”。即 将Str2原字符串值中的“o”替换“0”即为flag值。

reverse2

BUUCTF Reverse 逆向方向 1-8题 详解wp_第8张图片

BUUCTF Reverse 逆向方向 1-8题 详解wp_第9张图片

与上一题相同。分析代码得将字符串中的“i”“r”替换成“1”即为flag值。

内涵的软件

查看字符串列表,直接找到。把最外层换成flag{}即可

BUUCTF Reverse 逆向方向 1-8题 详解wp_第10张图片

新年快乐_脱壳

使用IDA打开文件反编译后只有两个函数,且不能修改,应该是加壳了

BUUCTF Reverse 逆向方向 1-8题 详解wp_第11张图片

使用exeinfo工具查壳,发现有UPX壳

BUUCTF Reverse 逆向方向 1-8题 详解wp_第12张图片

打开Upx脱壳机,将待脱壳文件拖至脱壳机左侧图像处即可脱壳

生成脱壳后的exe文件,以及备份的bak文件

BUUCTF Reverse 逆向方向 1-8题 详解wp_第13张图片

脱壳后,可查看源码。审计代码,flag即为第9行处字符串

BUUCTF Reverse 逆向方向 1-8题 详解wp_第14张图片

xor

查看字符串列表。找到主函数

分析源代码:输入__b的值,经过异或相关操作后,与global字符串相同,即flag匹配成功。由于两次异或运算等于本身,所以将global字符串再次经过相似的异或操作,即可得到flag。

BUUCTF Reverse 逆向方向 1-8题 详解wp_第15张图片

global存储的即为flag的原始数据

选中此部分,按Shift+E即可获取该数据的指定类型格式源码

BUUCTF Reverse 逆向方向 1-8题 详解wp_第16张图片

根据分析,编写脚本,获取flag

glo = [102,  10, 107,  12, 119,  38,  79,  46,  64,  17, 
     120,  13,  90,  59,  85,  17, 112,  25,  70,  31, 
     118,  34,  77,  35,  68,  14, 103,   6, 104,  15, 
     71,  50,  79]
flag = "f"
#将glo中的值进行异或处理。根据上文分析,此处应为逆序处理。
for i in range(len(glo)-1,0,-1):
    glo[i] ^= glo[i-1]
#将b中数值转义成对应ASCII码字符
for i in range(len(b)):
    a += chr(b[i])
print(a)

运行得到 flag{QianQiuWanDai_YiTongJiangHu}

helloword_安卓

使用Android Killer打开apk文件,在工程搜索中搜索“flag{”尝试查找flag字符串,找到flag

BUUCTF Reverse 逆向方向 1-8题 详解wp_第17张图片

reverse3_base64

根据字符串猜测,函数内有base64编码转换

BUUCTF Reverse 逆向方向 1-8题 详解wp_第18张图片

输入Str后进行,进行base64编码,最终赋值给Destination,然后在for循环内做字符处理,最终做出判断。

BUUCTF Reverse 逆向方向 1-8题 详解wp_第19张图片

写脚本

from base64 import *
d = [ 101, 51, 110, 105, 102, 73, 72, 57, 98, 95, 67, 64, 110, 64, 100, 72]
a = ""
for i in range(len(d)):	#
    d[i] -= i
    a += chr(d[i])
print(b64decode(a))		#

得到flag{i_l0ve_you}

你可能感兴趣的:(CTF_Reverse,网络安全,安全,学习方法,系统安全,经验分享)