OUC–网络空间安全导论–lab5–reverse
实验内容
lab1-1
将ghidra文件夹解压以后双击ghidraRun.exe打开软件。
在该页面的左上角点击file->new project
填好文件夹的名字然后点击finish进入文件夹
然后将要做的实验文件直接拖进去就好。
选择lab1-1双击进入。
进入后点击yes开始分析。
分析完成后,直接来到function的分段,在右侧查看反编译的结果。
通过以上函数可以判断flag的内容隐藏在local_78~local_60的16进制数中。
参考右侧的代码将左边的16进制的数转换为字符串可以得到如下图所示的结果:
将上述文字反转过来就可以得到答案了。至于为什么是反的,我参考了王森学长的博客,得知这是小端存放的方式。
lab1-2
同lab1-1,先得到代码:
通过for循环里的if条件进行判断得知:用户输入的字符与计数器中的数字进行异或,异或之后再和local88~local30中的字符进行比较,如果不相符则出错。
得知运算规则之后进行反向运算就可以得出flag。
这里我的疑惑就是local_88._0_4_这个变量和下面的local_88._0_4_是什么意思,问了百度,百度给出的答案是结构体。(但好像通过答案来看与结构体的关系不是很密切)
lab1-3
先转化为代码:
显然,只要跟着if中的判断语句走就能得出flag。
lab1-4
转化成代码:
可以看出main函数中只有一个return,然后看左侧的面板,可以看到在main函数的下面还有一个showflag的函数。
双击然后得到代码:
通过下面的if条件可以得出条件:
(用户输入的字符与计数器进行异或的结果再加上计数器的内容)的结果与给出的local_28~local_18中的内容进行比较。
因为前面说过是小端存储所以local中的内容应该是:“666E6567837A6D7A736A5F7D6F858A5F868990897D”
然后在通过上面的判断条件就可以反向推导出flag的内容。
答案
实验结果