第二届网刃杯网络安全大赛(re部分)

RE

freestyle

基本面
第二届网刃杯网络安全大赛(re部分)_第1张图片
64位 无壳

静态分析
第二届网刃杯网络安全大赛(re部分)_第2张图片
主函数中两个加密
验证成功之后的值进行md5加密即可

先看第一个函数(fun1)
第二届网刃杯网络安全大赛(re部分)_第3张图片
if判断 只要不让if成立即可

看第二个函数
第二届网刃杯网络安全大赛(re部分)_第4张图片
一样的道理

直接上爆破脚本
方便又快捷

for i in range(10000):
    if (i*3//9-9)*4 == 4400:
        print(i)
for i in range(10000):
    if (2 * (i % 56)) == 98:
        print(i)
        
#3327 3328 3329
#49 105

又因为题目给了提示取可被模除的最小值
也就是取3327和105进行加密即可

flag{31a364d51abd0c8304106c16779d83b1}

Re_function

基本面
第二届网刃杯网络安全大赛(re部分)_第5张图片
32位无壳

直接分析
第二届网刃杯网络安全大赛(re部分)_第6张图片
花指令直接nop掉跳转函数 在文件头创建函数
就可以看到主函数了
第二届网刃杯网络安全大赛(re部分)_第7张图片
流程很清晰就一个简单的分步异或 然后题目中另一个文件是base64换表
所以先把base64的表解出来 再拿去异或就可以了
要注意ida中大小端存储问题

key = 'dqTTdxtxdA@Hpm'
#key = key[::-1]
key = list(key)
for i in range(0,len(key),2):
    key[i] = chr(ord(key[i]) ^ 0x37)
for i in key:
    print(i,end="")
#SqcTSxCxSAwHGm/J
str2 = [0x41,0x78,0x66,0x72,0x41,0x78,0x5e,0x4e,0x5d,0x52,0x0e,0x3d]
for i in range(0,len(str2),2):
    str2[i] = str2[i] ^ 0x37
for i in str2:
    print(chr(i),end="")
#SqcTSxCxSAwHGmvxQrvxiNjR9=

剩下就是一个base64换表了

import base64
import string
string = "SqcTSxCxSAwHGm/JvxQrvxiNjR9="
tableBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
tableNew = "FeVYKw6a0lDIOsnZQ5EAf2MvjS1GUiLWPTtH4JqRgu3dbC8hrcNo9/mxzpXBky7+"
'''
maketrans():用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标;
translate():法根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中;
decode():以encoding指定的编码格式解码字符串。
'''
'1.换表'
maketrans = str.maketrans(tableNew, tableBase64)
'2.使用新表转换字符串'
translate = string.translate(maketrans)
print(translate)
'2.Base64解码'
flag = base64.b64decode(translate)
'''
三合一操作:
flag = base64.b64decode(string.translate(str.maketrans(tableNew, tableBase64)))
'''
flag = base64.b64decode(string.translate(str.maketrans(tableNew, tableBase64)))
print(flag)
flag = list(flag)
print(flag)

b’flag{we1come_t0_wrb}’

easyiec

打开流量包,抓tcp流,就往下翻了翻
第二届网刃杯网络安全大赛(re部分)_第8张图片

carefulguy

打开流量包,抓tcp流,从3流之后每个流都有一位flag
第二届网刃杯网络安全大赛(re部分)_第9张图片全部提取出来,16进制转成ascii码

flag{p4us315v3ry1nt3restic9}

你可能感兴趣的:(python,c语言,linux)