[HGAME 2023 week4]shellcode

看题目,将base64解密,然后dump下来,再拉进ida里,发现为tea加密

在tea加密中得到key

密文就是另外的一个文件

exp

python 复制代码
import re
from ctypes import *

import libnum


def decrypt(v, k):
    v0, v1 = c_uint32(v[0]), c_uint32(v[1])
    delta = 0xABCDEF23
    k0, k1, k2, k3 = k[0], k[1], k[2], k[3]

    total = c_uint32(delta * 32)
    for i in range(32):
        v1.value -= ((v0.value << 4) + k2) ^ (v0.value + total.value) ^ ((v0.value >> 5) + k3)
        v0.value -= ((v1.value << 4) + k0) ^ (v1.value + total.value) ^ ((v1.value >> 5) + k1)
        total.value -= delta

    return v0.value, v1.value


s = """
mov     [ebp+30h+var_20], 16h
mov     [ebp+30h+var_1C], 21h ; '!'
mov     [ebp+30h+var_18], 2Ch ; ','
mov     [ebp+30h+var_14], 37h ; '7'
"""
p = r', (\w+)h'
m = re.findall(p, s)
k = ['0x' + x for x in m]
print(k)
k = [int(j, 16) for j in k]
print(k)
with open(r"D:\desktop\REVERSE\nssctf\shellcode\outputdir\flag.enc", 'rb') as f:
    enc = f.read()
print(enc)
e = list(map(lambda i: (int(enc[i:i + len(enc) // 10][::-1].hex(), 16)), range(0, len(enc), len(enc) // 10)))
print(e)

print(b''.join(
    map(lambda x: libnum.n2s(x[0])[::-1] + libnum.n2s(x[1])[::-1],
        list(map(lambda x: decrypt([e[x], e[x + 1]], k), range(0, len(e), 2))))))
相关推荐
傻啦嘿哟1 小时前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
B站计算机毕业设计超人1 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
IT古董2 小时前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
煎鱼eddycjy2 小时前
新提案:由迭代器启发的 Go 错误函数处理
go
煎鱼eddycjy2 小时前
Go 语言十五周年!权力交接、回顾与展望
go
湫ccc2 小时前
《Python基础》之pip换国内镜像源
开发语言·python·pip
hakesashou2 小时前
Python中常用的函数介绍
java·网络·python
菜鸟的人工智能之路2 小时前
极坐标气泡图:医学数据分析的可视化新视角
python·数据分析·健康医疗
菜鸟学Python2 小时前
Python 数据分析核心库大全!
开发语言·python·数据挖掘·数据分析
小白不太白9502 小时前
设计模式之 责任链模式
python·设计模式·责任链模式