OUC--网络空间安全导论--lab5--reverse

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的内容。

答案

在这里插入图片描述

实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值