[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]