X-CTF(REVERSE入门) getit

之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。

打开看见了可疑的三串字符,s字符串的长度和flag内容的长度一样


图1

图2

找到关键代码页面,打开/tmp/flag.txt文件,将重新交换顺序的s字符串扔到flag文件里


图3

根据重新交换的方式写出解密代码


图4

附代码:

 1     s="c61b68366edeb7bdce3c6820314b7498"
 2 
 3     flag="????????????????????????????????"
 4 
 5     s=','.join(s)
 6 
 7     s=s.split(',')
 8 
 9     flag=','.join(flag)
10 
11     flag=flag.split(',')
12 
13     print(s,"
----------------
")
14 
15     v3=0
16 
17     v6=0
18 
19     for i in s:
20 
21           if(v6 & 1):
22 
23                 v3=1
24 
25           else:
26 
27                 v3=-1
28 
29           flag[v6] = chr(ord(s[v6])+v3)
30 
31           v6=v6+1
32 
33 
34     out=''
35 
36     for i in flag:
37 
38           out +=  i
39 
40     print('harifCTF{'+out+'}')

这道题里是将运行的结果保存进flag.txt文本内,程序运行结束时又将文本内容清空,所以在相应目录文件下我们看不到flag

如果使用动态调试,不需要写解密代码就可以找到flag,这和“no-strings-attached”那道题一样用gdb调试。awsl后期能动态肯定动态,前面写逆向代码练手~~~



原文地址:https://www.cnblogs.com/blackicelisa/p/12263601.html