分析程序reverse_0,请找出隐藏信息,并将flag提交。flag格式:flag{<flag值>}
分析程序reverse_1,请找出隐藏信息,并将flag提交。flag格式:flag{<flag值>}
分析程序reverse_2,请找出隐藏信息,并将flag提交。flag格式:flag{<flag值>}
分析程序reverse_3,请找出隐藏信息,并将flag提交。flag格式:flag{<flag值>}
1.分析程序reverse_0,请找出隐藏信息,并将flag提交。flag格式:flag{<flag值>}
拿到题目先查下壳
64位,没有壳(壳是对代码的加密,起混淆保护的作用,一般用来阻止逆向)
拖进IDA(64位)进行反汇编
Flag:flag{this_Is_a_EaSyRe}
2.分析程序reverse_1,请找出隐藏信息,并将flag提交。flag格式:flag{<flag值>}
64位,没有壳
拖进IDA(64位)进行反汇编
先查看一下字符串,简单的题目会有flag或者敏感数据字符等信息,方便我们定位函数查看字符串的方法为shift+F12
这里全局搜索flag——ALT+T
找到了关于flag的信息,F5进去看看伪代码
观察函数,发现如果str1和str2相同的话,就说明找的想要的flag
要输入的str1就是flag
双击str2
得到str2的原始数据
然后观察函数,发现与str1作比较的str2被更改过,用R将十进制数转换为字符,观察这个for循环遍历了str2,将’o’ 改为了’0’
Flag:flag{hell0_w0rld}
3.分析程序reverse_2,请找出隐藏信息,并将flag提交。flag格式:flag{<flag值>}
64位,没有壳
拖进IDA(64位)进行反汇编
先查看一下字符串,简单的题目会有flag或者敏感数据字符等信息,方便我们定位函数查看字符串的方法为sh
ift+F12
看到了一点flag 但不确定是否为正确的flag
双击点进去上面的“this is the right flag” ctrl+x交叉引用进入引用它的代码段 F5查看伪代码
s2为输入的函数,如果输入的s2和flag相等,则输出“this is the right flag”
上面则是一个替换函数,从0到flag的长度-1(就是flag的长度的for循环次数) flag里面ASCII 值为i和r的字符会被替换成值为1的字符,选中105、114、49按R键查看ASCII码值对应的字符
即为hacking_for_fun里面的“i”和“r”被替换成了“1”
所以flag{hack1ng_fo1_fun}
Flag:flag{hack1ng_fo1_fun}
4.分析程序reverse_3,请找出隐藏信息,并将flag提交。flag格式:flag{<flag值>}
- 查看程序的的字节长度和是否加壳
2.用ida分析
程序对输入的字符串先进行base64加密
再对输入的字符串进行了加密(称不上加密吧,只能进行了简单运算),再与程序中的字串比较,相关就输出rigth flag!。
3.逆运算
分析程序,写一个逆算出flag的程序
import base64
data='e3nifIH9b_C@n@dH'
flag=''
for i in range(len(data)):
flag+=chr(ord(data[i])-i)
flag=base64.b64decode(flag)
print(flag)
FLAG:flag{i_l0ve_you}