攻防世界RESERVE练习区解析合集(中)

本文介绍了几个具体的逆向工程挑战案例,包括利用EXEinfoPE和IDA进行文件类型的确定及主函数的查找,通过反编码获取flag的过程,以及对Python加密代码的分析与解密方法。还展示了如何通过十六进制转换破解加密的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

五:insanity

首先利用下载附件,使用EXEinfo PE查看文件类型 为32位

利用IDA打开,找到主函数 同时Shift+F12

我们就此可以推测这就是flag

六:python-trade

我们利用软件打开为一堆乱码 

反编码得到:

import base64   #Base64是一种任意二进制到字符串的编码方法,.base64生成的编码都是ascii码。
                 base64编码或解码都返回的是字节,需要手动转换成字符

def encode(message):  #在python中encode指编码
    s = ''   
    for i in message: #i依次表示message中的一个元素,遍历完所有元素循环结束。
        x = ord(i) ^ 32  #以i为参数,返回其对应的 ASCII 数值,再与32进行异或运算
        x = x + 16
        s += chr(x)      #chr()函数是输入一个整数【0,255】返回其对应的ascii符号

    return base64.b64encode(s)

correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = ''   #空格
print 'Input flag:'
flag = raw_input()  #raw_input()函数会将所有输入的数据一律都转换为字符串格式.
if encode(flag) == correct:
    print 'correct'  #将flag加密后得到的值等于corret,则输出“corret(正确)”
else:
    print 'wrong'

分析代码可得,加密后的flag等于corret,那么我们将corret进行解密,就能得到flag。而corret的每一个字符通过与32异或、加16、base64加密后得到XINkVmtUI1MgXWBZXCFeKY+AaXNt。那么解密时就进行逆向操作,即将corret进行 base64 解密,再将得到的字符串中的每一个字符进行减 16、与32异或的运算。
即flag为 nctf{d3c0mpil1n9_PyC} 。

import base64
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
temp=base64.b64decode(correct)
flag=''
for i in temp:
    i=i-16
    i=i^32
    flag +=chr(i)
print(flag)

七:re1 

首先利用下载附件,使用EXEinfo PE查看文件类型为32位

利用IDA打开,同时Shift+F12找到如图

双击如下,可惜不正确哦:

继续跟踪

 F5反编码

可以发现v4与flag有关

查看xmword_413E34
R转换16进制数
A合并后出现

八:Hello, CTF

首先利用下载附件,使用EXEinfo PE查看文件类型为32位

利用IDA打开,找到主函数,F5查看伪代码

第一部分是我们需要的flag,第二部分则是将我们输入的字符串转化为16进制,然后再将其转化为字符串储存在str中,第三部分则是判断输入的字符串转换之后是否和flag一样。

首先,可以看到先是将字符串复制到v13的位置,

然后,后面对输入进行了判断,输入的字符串不能大于17

接着,将字符串以十六进制输出,然后,再将得到的十六进制字符添加到v10

最后,进行比较,看输入的字符串是否和v10的字符串相等,如果相等,则得到真确的flag

 a437261636b4d65转化为CrackMeJustForFun,也就是我们所需要的flag

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值