当前位置: 首页 > news >正文

[HGAME 2023 week4]shellcode

看题目,将base64解密,然后dump下来,再拉进ida里,发现为tea加密
image.png
在tea加密中得到key
image.png
密文就是另外的一个文件
exp

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))))))

相关文章:

  • 在CSS中,可以使用`float`属性来设置元素浮动
  • Java--命令行传参
  • Elasticsearch 认证模拟题 - 15
  • Web前端不挂科:深入探索与实战指南
  • Python课设-学生信息管理系统
  • Rust-03-数据类型
  • 医疗器械网络安全风险管理的基本步骤
  • 结构化查询语言SQL
  • Unity与前端交互:深度解析与实战指南
  • 二、electron 的 BrowserWindow 的属性
  • WinForms 应用(.NET 8.0)使用ReportViewerCore.WinForms显示打印RDLC报表
  • 监控易监测对象及指标之:全面监控SQL Server 2008
  • shell简介
  • LLVM Cpu0 新后端4
  • linux暴力破解漏洞利用
  • 未来已来:Angular、React、Vue.js——前端框架的三大巨头
  • 【POSIX】使用iconv库将UTF-8字符串转换为UTF-16字符串
  • Pytorch环境配置
  • Mybatis06-动态SQL
  • 海康威视综合安防管理平台 多处 FastJson反序列化RCE漏洞复现
  • 娱见 | 为了撕番而脱粉,内娱粉丝为何如此在乎番位
  • 马上评|从一个细节看今年五一档电影
  • 人民日报今日谈:坚决克服麻痹思想,狠抓工作落实
  • 五一假期前三日多景区客流刷新纪录,演艺、古镇、山水都很火
  • AI把野史当信史?警惕公共认知的滑坡
  • 阿根廷发生5.8级地震