攻防世界——debug

emmmmmmm算是一个.net编译文件分析开始的一个里程碑吧,放到ida\OD里面发现都没法分析,用exeinfope查看是.net编译,开始以为是.net加壳,搜了很多,也没成功,ida照样没法分析,后来才明白应该用其他的反汇编工具,之前我用的.net refector,但经过了这一次感觉这个软件没有dnspy好用,所以强烈安利dnspy

查看源代码,全都在02000003里面
攻防世界——debug_第1张图片
攻防世界——debug_第2张图片
发现了不得了的东西在这里插入图片描述
在这边,他并没有检测就直接打出了flag,所以直接运行,中间中断在入口,单步往后面走,查看变量b就能知道flag了,这难度也是6666666
攻防世界——debug_第3张图片
但是为了学习嘛,所以还是看了一下算法,并且学习一下.net语言的书写方法
这里是关键转变地点
在这里插入图片描述
跟进去调试,发现主要是在这里进行的操作
攻防世界——debug_第4张图片
大致的操作就是根据字符串CreateByTenshine让其每个字符都进行一次15循环的异或操作,异或数值在下面的这个表里面(这里的15是个坑,开头是1不是0也是个坑,一定要看好)
攻防世界——debug_第5张图片
然后贴出python代码

import hashlib
a=[2,3,5,7,0xb,0xd,0x11,0x13,0x17,0x1d,0x1f,0x25,0x29,0x2b,0x2f,0x35,0x3b,0x3d,0x43,0x47,0x49,0x4f,0x53,0x59,0x61,0x65,0x67,0x6b,0x6d,0x71]
b="CreateByTenshine"
c=""
for i in range(len(b)):
    d=ord(b[i])
    for j in range(1,15):
        d=a[j]^d
    c+=chr(d)
print(c)
m=hashlib.md5(c.encode("utf-8")).hexdigest()
print("flag{",m,"}")

(这里flag转一下大写,小写好像不行)

你可能感兴趣的:(逆向题目练习,逆向,攻防世界)