小秦哥 发表于 2024-5-20 03:00:19

[H&NCTF] maybe_xor题解

maybe_xor

感觉这道逆向题与其说是考逆向水平,倒不如说是考编写脚本的能力
起首题目给了个远程地址,nc连接会回显ELF: 接一串base64编码的东东,解码后发现是ELF文件。
用IDA打开发现是从数据段读取24个字节到栈上并举行异或,每个字节异或的值都差别,但异或后的结果不会写回栈
程序的目的是让你算出异或后的字节数组并发送过去,并且这个过程会重复多次
https://img2024.cnblogs.com/blog/3317193/202405/3317193-20240514120225405-253675519.png
调试可知,虽然每次文件的数据差别,程序入口差别,但汇编代码都差不多。只是每次数据段的偏移和异或值有变革罢了,写一个文件处理脚本即可
具体思绪看下面脚本注释即可
from base64 import *from pwn import *import struct# context.log_level = 'debug'image_base = 0x8048000def get_hex():    f = open('elf', 'rb')   f.seek(0x18)    # 获取程序入口地址并转为文件偏移地址    EP = u64(f.read(8)) - image_base    # 获取数据的偏移地址    f.seek(EP + 7)    rsi = struct.unpack("
页: [1]
查看完整版本: [H&NCTF] maybe_xor题解