实验内容
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!
● $
实验文件链接:https://pan.baidu.com/s/1sMm8KQTKll2cRW-ZN0u-sw
提取码:xlxc
实验步骤
1、lab1-1
阅读反汇编后的汇编码,从下图可以看出,程序将字符串存放于栈中,根据输出结果,考虑ASCII码转换,66h是f的十六进制,参照下图,最先被移进栈的八个字符,它们的十六进制为6C65577B67616C66h可以看到66是所有字符中地址最低的,它也是低字节,所以这是低地址放低字节的情况,因而运行程序的机器是小端模式。该题考察的是大端模式与小端模式。我们将整个字符串都变为大端模式可得如下字符串:666c61677b57656c636f6d655f74305f73656375726974795f6330757273657d
参照ASCII码转换表可得出题目答案