lab5-reverse
一、实验目标
4道逆向题目,完成实验报告
二、实验内容&实验步骤
lab1包含4个题目,需要对4个程序进行逆向。逆向结果为一个flag开头的可见字符串,正则形式为: flag{[0-9a-zA-Z]+}。
● 其中lab1-1是简单的逆向入门用于熟悉软件和环境,lab1-2和lab1-3涉及到数学计算,需要通过基本的 数学运算性质进行逆计算得出flag,lab1-4需要对原有的二进制进行一些修改,之后才能进行正常的输 入输出。
● 每个程序在输入正确的flag后会显示good,如果flag不正确将会输出error flag。
● $ ./lab1-1
● 123
● error flag
● $ ./lab1-1
● flag{XXXXXXXXXXXXX}
● good!
●$
lab1-1
lab1-1难度较低,利用Ghidra反汇编,然后寻找关键点即可得出flag
- step1:首先从function中寻找main函数
- step2:发现flag和good关键词,锁定答案就在这里
在这里插入图片描述
- step3:根据反汇编得出的代码发现答案就藏在了这四个十六进制的数中
local_78 = 0x6c65577b67616c66;
local_70 = 0x5f30745f656d6f63;
local_68 = 0x7974697275636573;
local_60 = 0x7d6573727530635f;
- step4:立刻带入十六进制解码器中进行解码,发现出现flag,但是反过来了,需要翻转。
- step5:带入文本反转器中
- stpe6:继续重复step4-step5三次
- step7:最终答案为flag{Welcome_t0_security_c0urse}
lab1-2
lab1-2涉及到数学计算,需要通过基本的 数学运算性质进行逆计算得出flag
-
step1:直接定位function,找到main函数
-
step2:根据反汇编代码,找到判断good的条件
for (local_8c = 0; (int)local_8c < 0x17; local_8c = local_8c + 1