2022年浙江省中职组网络空间安全省赛 逆向分析及隐写

B-6:逆向分析及隐写

  1. 从靶机服务器的FTP上下载PE01文件,对PE01.exe二进制文件进行静态调试,将main函数的入口地址作为Flag值提交;

  1. 对PE01.exe二进制文件进行静态调试,将该二进制文件中检查许可证的关键函数作为Flag值提交;

  1. 对PE01.exe二进制文件进行静态调试,找到Flag1值并提交;

  1. 对PE01.exe二进制文件进行静态调试,尝试破解该二进制文件,将注册成功后的回显信息作为Flag值提交;

  1. 对PE01.exe二进制文件进行静态调试,将该激活所需的许可证码作为Flag值提交;

从靶机服务器的FTP上下载PE01文件,对PE01.exe二进制文件进行静态调试,将main函数的入口地址作为Flag值提交

首先查看PE01.exe位数

使用64位IDA打开PE01.exe

Flag : 0x140001000

对PE01.exe二进制文件进行静态调试,将该二进制文件中检查许可证的关键函数作为Flag值提交

打开PE01.exe

随便输入一串,按回车执行会报Wrong错误。

通过IDA查看Wrong的位置:

如果Shift+F12无法打开String界面,手动打开方法:

发现一个特殊的词:P@ssw0rd,我们双击寻找。

双击溯源:

下翻可以翻到程序打开就显示的文本,继续往下翻:

找到了Wrong,左上角的是报Wrong的函数。

可以发现上面也有一个,那么这一段是什么意思呢?这一个晚点说,不是第二题的答案。

我们在左侧找到并进入这个函数,查找许可证判断函数。

可以发现有一个if,如果条件不匹配则跳出Wrong。

双击进入比对的这个函数。

for和if判断,验证函数就是这个函数。

Flag : sub_1400016A0

对PE01.exe二进制文件进行静态调试,找到Flag1值并提交

本题是隐写题。

我们可以发现有一个提示在String界面:

我们使用7z解压PE01.exe。

背景图片在.rsrc/2052/BITMAP里。

在结尾能发现一串可疑的十六进制字符串。

import re
# 使用re(正则表达式)模块从一个字符串中提取十六进制值,将它们转换成ASCII字符,并打印输出。
str ='04 06 06 0C 06 01 06 07 03 01 07 0B 06 03 04 00 04 0E 07 04 05 0F 03 05 06 05 05 0F 06 0D 04 05 07 0D'

ns = str.replace(' ', '')
# 使用replace函数删除空格
len_result = len(ns)
# 变量len_r存储新字符串result的长度
flag = ""
hex_v = ""

for i in range(1, len_result, 2):
    # 循环for j in range(1, len_r, 2)从索引1开始迭代新字符串result,步长为2。这是因为十六进制值由一对字符表示
    hex_v += (ns[i])
result = re.findall('.{2}', hex_v)
# 使用re.findall函数在字符串hex_v中查找所有出现的两个字符。正则表达式.{2}匹配任意两个字符

for x in result:
    flag += (chr(int(x, 16)))
    # 第二个循环for i in result1迭代列表中的每个两个字符的字符串。在循环中,每个字符串使用int函数转换为十六进制整数,然后使用chr函数转换为ASCII字符。结果字符被添加到字符串flag中

print(flag)

对PE01.exe二进制文件进行静态调试,尝试破解该二进制文件,将注册成功后的回显信息作为Flag值提交

本题就是上文提到的。

jnz : jump if not zero

意思就是如果不是0,则跳转执行这个函数。

那么条件是什么呢?

是ZF标志位 ZF=1 即跳转

在本题中是 cmp eax , 1

因此如果eax = 1 则ZF=1,则跳转。

那么很简单,我们只需要把 cmp eax , 1 改成 0 即可。

先选中1

然后打开程序随便输入即可。

Flag : Flag{yes_u_won!}

本题还有第二种解法,比较麻烦,就是手动nop掉return到0和if的指令,即可实现相同操作。

对PE01.exe二进制文件进行静态调试,将该激活所需的许可证码作为Flag值提交

我们查看检验函数

也就是,

这两个要相等。

关于这题,我对这方面不是很了解,这里推荐一个大佬的文章:

中职网络安全2022省赛之逆向PE01程序静态分析

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值