首页 > 其他分享 >[SMC+OpenSSL]r3ctf nSMC

[SMC+OpenSSL]r3ctf nSMC

时间:2024-07-18 12:18:39浏览次数:10  
标签:OSSL 加密 ctx CTX OpenSSL r3ctf PROVIDER EVP SMC

SMC

参考文章:https://www.cnblogs.com/hetianlab/p/17199400.html
SMC实现的主要步骤包括:

1.读取PE文件并找到需要加密的代码段。

2.将代码段的内容进行异或加密,并更新到内存中的代码段。

3.重定向代码段的内存地址,使得加密后的代码能够正确执行。

4.执行加密后的代码段。

OpenSSL

OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *libctx, const char *name);

加载不同的provider.
默认提供者(Default Provider):
OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *libctx, "default");
提供现代、广泛使用的加密算法,包括对称加密、非对称加密、哈希函数、数字签名等。
例如,AES、RSA、SHA-2、ECDSA 等。
遗留提供者(Legacy Provider):
OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *libctx, "legacy");
用于需要支持老旧系统或遗留系统的场景,提供一些较旧的加密算法。
这些算法可能不再被推荐用于新项目,因为它们的安全性可能较低。
示例:使用 DES 进行加密。
FIPS 提供者:
OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *libctx, "fips");
用于需要符合 FIPS 标准的场景,确保使用的加密算法符合特定的安全标准。
示例:使用 FIPS 认证的 AES 进行加密。
img
此题加载了前两个provider
加密函数:
// 创建和初始化上下文
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
// 禁用填充
if (1 != EVP_CIPHER_CTX_set_padding(ctx, 0))
// 初始化加密操作
if (1 != EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv))
// 提供要加密的数据
EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, strlen((char *)plaintext))
// 最后一步加密操作
EVP_EncryptFinal_ex(ctx, ciphertext + len, &len)
// 清理
EVP_CIPHER_CTX_free(ctx);
SMC技术将plaintext解密,之后将解密的值fun()的地址处
img

附加一道简单的smc
img
patch一下
img
之后将这个函数的部分全部u掉,之后p(如果直接p可能会识别不出来,导致不能反编译)

标签:OSSL,加密,ctx,CTX,OpenSSL,r3ctf,PROVIDER,EVP,SMC
From: https://www.cnblogs.com/Un1corn/p/18306676

相关文章

  • OpenSSL RSA相关基本接口和编程示例
    本文测试代码基于Openssl版本:1.1.1fRSA接口接口简介RSA对象创建intRSA_generate_key_ex(RSA*rsa,intbits,BIGNUM*e,BN_GENCB*cb);功能:创建⼀对rsa的公钥私钥参数:RSA密钥指针,密钥bit位数,公钥指数的⼤数形式指针,回调函数返回:成功返回1,失败返回0e主要有两个取值......
  • HAL库源码移植与使用之FSMC (例子加思路与理解,万字良心保证你能听懂)
    FMC和FSMC是一样的东西,只是FMC更可控地址更多又可以驱动SDRAM,用法都一样!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!总结:其实fsmc更像是一个有着特定转换时序功能的寄存器,每个fsmc映射在芯片内存里的地址都有一个这样的寄存器,你往这个映射的地址里赋值,这个赋值信息先到达对应fsmc寄存器,他不会像普通寄存器一样直接控制......
  • window环境的openssl二进制发行版安装
    当你去openssl官网找二进制发行版的时候,很可惜,openssl不提供任何二进制发行版的版本,虽然有第三方,但openssl不推荐也不建议任何一个。点击到这个位置,会有一些官方的说明和第三方的链接。最终你会到达这个位置,也就是openssl二进制发行版的列表页面。自行选择。在此奉上当前最......
  • 手动编译安装OpenSSL与OpenSSH
    1、安装必要工具yuminstall-ytarzlib-devel2、编译安装OpenSSLcd/usr/local/srcwgethttps://www.openssl.org/source/openssl-1.1.1w.tar.gztar-xvzfopenssl-1.1.1w.tar.gzcdopenssl-1.1.1w./config--prefix=/usr/local/openssl--openssldir=/usr/local/opens......
  • linux centos8升级openssh与openssl
    LinuxOpenSSH升级升级openssh之前需要先升级openssl 1、升级准备##1.1、查看系统版本和ssh版本linux系统版本cat/etc/redhat-release#或者uname-aopenssh查看一下原安装版本ssh-Vopenssl查看一下原安装版本opensslversion 1.2、下载软件包Opens......
  • centos7 安装openssl
    1.下载openssl官网地址:https://www.openssl.org/source/wgethttps://www.openssl.org/source/openssl-3.0.14.tar.gztar-zxvfopenssl-3.0.14.tar.gzcdopenssl-3.0.142.编译安装yum-yinstallperl-IPC-Cmd./config--prefix=/usr/local/opensslmakemakeinstall3......
  • R3CTF NinjaClub复现
    R3CTFNinjaClubjinjia2沙箱题目源码fromjinja2.sandboximportSandboxedEnvironment,is_internal_attributefromjinja2.exceptionsimportUndefinedErrorfromfastapiimportFastAPI,Formfromfastapi.responsesimportHTMLResponsefrompydanticimportBaseMod......
  • openssl 生成SSL ca证书 p12信任库、密匙库
    #CA根证书opensslgenrsa-des3-outca.key2048opensslreq-new-x509-days3650-keyca.key-outca.crt#服务器opensslgenrsa-outserver.key2048opensslreq-new-outserver.csr-keyserver.keyopensslx509-req-inserver.csr-CAca.crt-CAkeyca.key-CAcrea......
  • R3CTF -Cry(部分)
    上线看了一下题,就做了三个,还是太菜了(T~T)r0system题目出的很抽象,就是代码长,没有啥别的考点,先创建一个账号,登录进入后修改Alice账号密码,再使用Alice登录拿到私钥就好了。fromhashlibimportmd5fromCrypto.CipherimportAESfromCrypto.Util.numberimport*importgmpy2f......
  • sdf 测试-1-openssl
    任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容和AI要给出详细过程,否则不得分。使用git管理你的代码。根据gmt0018标准,推导sdf的接口调用模式,比如调用SDF_GenerateRandom,还应调用其他什么函数,调用顺序是什么,给出结论和推导过程。(5‘)使用opens......