准备期末考试,这段时间只能从xctf oj上面看以前没做的ctf拿来做了
打开是一个.net,拖ILSpy,看代码流程
流程还是很清晰的,读取用户输入,然后作比较就好。(a==b)这里就是比较点,再往前面看,b是运行时生成的,再看下生成b的那段函数,直接用Python重写一次,print即可。
以下为生成代码:
def num_xor(a0,a1):
num_int=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113]
return num_int[a1]^a0
def compare(a0,a1):
a2=''
num=0
if(0<len(a0)):
c=a0[num]
num2=1
while(num<len(a0)):
c=a0[num]
num2=1
c=chr(num_xor(ord(c),num2))
num2+=1
while(num2<15):
c=chr(num_xor(ord(c),num2))
num2+=1
a2+=c
num+=1
return a2
def main_in():
a="CreateByTenshine"
a_int32=''.join([str(ord(j)) for j in a])
a3=compare(a,15)
m1.md5.new()
m1.update(a3)
print "flag{"+m1.hexdigest().upper()+"}"
import md5
if __name__ == '__main__':
main_in()
flag{967DDDFBCD32C1F53527C221D9E40A0B}
以前没接触过.net,ILSPy好像有一个debugger插件,不过官网和Github没找到,有动态调试就更方便了