0
点赞
收藏
分享

微信扫一扫

计算机网络第一章(谢希仁第8版学习)

SDKB英文 2023-05-05 阅读 56

1.对靶机服务器场景桌面上的PE01.exe二进制文件进行静态调试,将main函数的入口地址作为Flag值提交;

使用IDA64 Pro打开PE01.exe,然后点击左边函数列表一栏,按下Ctrl+F搜索main

在第三列可以发现main函数(WinMain)入口地址为0x0000000140001000
flag{0x0000000140001000}

2.对靶机服务器场景桌面上的PE01.exe二进制文件进行静态调试,将该二进制文件中检查许可证的关键函数作为Flag值提交;

右键查看文本试图

搜索报错提示“wrong


查看sub_14001250的伪代码,发现名为su_140016A0函数

最终的FLAG为check函数的入口地址,0x00000001400016A0

flag{0x00000001400016A0}

3. 对靶机服务器场景桌面上的PE01.exe二进制文件进行静态调试,找到Flag1值并提交;

查看main伪代码,发现关键函数sub_14001920

发现这么一段话“Maybe the secret is in the background image”


发现这么一段话“Maybe the secret is in the background image”

对文件进行提取

在“.rsrc\2052\BITMAP”下发现图片

使用十六编辑工具,查看尾部发现问题

from binascii import a2b_hex
a2b_hex(b'466c6167317b63404e745f35655f6d457d')
#按照 ASCII 编码表,将每两个十六进制字符视为一个字节(即 8 个比特位),并将多个字节合并在一起,就可以得到明文 'Flag1{c@Nt_5e_mE}


Flag1{c@Nt_53_mE}

4.对靶机服务器场景桌面上的PE01.exe二进制文件进行静态调试,尝试破解该二进制文件,将注册成功后的回显信息作为Flag值提交;


编辑IDA数据库中的字节值

原01改为00

Edit->Patch program->Apply patches to input file… 将修改保存到原二进制文件中

5.对靶机服务器场景桌面上的PE01.exe二进制文件进行静态调试,将该激活所需的许可证码作为Flag值提交;

#include <stdio.h>`

int main() {
    int final_code[17] = {-100, 72, -98, -103, 78, -118, 61, -91, 83, -74, -128, 6, 39, -93, 117, -103, -65};
    int key = 0x41;

    for (int i = 0; i < 17; i++) {
        final_code[i] ^= key + i;
        final_code[i] = -final_code[i];
        final_code[i] = 16 * (final_code[i] & 0xF) | (final_code[i] >> 4) & 0xF;
        putchar(final_code[i]);
    }

    return 0;
}
//*这段C代码包括一个main()函数,其中声明了一个长度为17的整型数组 final_code 和一个整型常量 key。
//代码使用for循环遍历数组中的每个元素,然后对每个元素执行一系列操作,并将最终的flag打印。

flag{2o22_Ch1n@Ski1ls!} 
题号FLAG值
题目一0x0000000140001000
题目二0x00000001400016A0
题目三Flag1{c@Nt_5e_mE}
题目四Flag{yes_u_w0n!}
题目五2o22_Ch1n@Ski1ls!
举报

相关推荐

0 条评论