[HNCTF 2022 WEEK4]flower plus

2024-06-10 06:04
文章标签 2022 plus hnctf flower week4

本文主要是介绍[HNCTF 2022 WEEK4]flower plus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一种花指令
image.png
第二种花指令
image.png
根据两种花指令特征,写出去花指令脚本
image.png
image.png

saddr=0x401000
eaddr=0x435000
for i in range(saddr,eaddr):if get_wide_dword(i)==0x01740275:print(hex(i)+','+hex(get_wide_dword(i)))patch_byte(i-5,0x90)patch_dword(i-4,0x90909090)patch_dword(i,0x90909090)patch_word(i+4,0x9090)if get_qword(i)==0x8336E800000001E8:print(hex(i)+','+hex(i+4)+','+hex(get_wide_dword(i)))patch_qword(i,0x9090909090909090)patch_dword(i+8,0x90909090)patch_byte(i+12,0x90)

使用脚本将花指令去除后,u,c,p一下基本没啥问题。
可以得到下面正常main函数
image.png
分析可得为rc4+xor加密

saddr=0x401000
eaddr=0x435000
for i in range(saddr,eaddr):if get_wide_dword(i)==0x01740275:print(hex(i)+','+hex(get_wide_byte(i)))patch_dword(i,0x90909090)patch_dword(i-4,0x90909090)patch_word(i+4,0x9090)patch_byte(i-5,0x90)if get_wide_dword(i)==0x000001E8:if get_wide_dword(i+4)==0x8336E800:print(hex(i)+','+hex(get_wide_byte(i)))patch_dword(i,0x90909090)patch_dword(i+4,0x90909090)patch_dword(i+8,0x90909090)patch_byte(i+12,0x90)

用下面idapython脚本得到密文和key

enc=list(map(lambda x:get_wide_dword(x),range(0x004440E0,0x004440E0+27*4,4)))
print(enc)
key=''.join(map(lambda x:chr(get_wide_byte(x)),range(0x00446900,0x0044690f)))
print(key)

exp

#include<iostream>
#include<cstdint>
using namespace std;void main()
{uint8_t aHelloCtfers[] = "Hello_Ctfers!!!";uint32_t key_len = sizeof(aHelloCtfers);uint32_t data[] = { 77, 4294967270, 73, 4294967189, 3, 45, 43, 4294967226, 4294967274, 109, 4294967295, 89, 112, 0, 27, 4294967209, 44, 4294967216, 50, 4294967192, 111, 4294967180, 86, 4294967202, 76, 121, 127 };uint32_t data_len = 27;for (int i = data_len - 1; i >= 0; i--) {data[i] = data[i] ^ data[(i + 1) % data_len];}uint32_t result; // eaxuint8_t v4[320]; // [esp+Ch] [ebp-25Ch]uint32_t v5; // [esp+14Ch] [ebp-11Ch]uint32_t k; // [esp+150h] [ebp-118h]uint32_t j; // [esp+154h] [ebp-114h]uint32_t i; // [esp+158h] [ebp-110h]uint32_t v9; // [esp+15Ch] [ebp-10Ch]uint32_t m; // [esp+160h] [ebp-108h]uint8_t v11[256]; // [esp+164h] [ebp-104h] BYREFfor (i = 0; i < 256; ++i){v11[i] = i;v4[i] = aHelloCtfers[i % key_len];}v9 = 0;for (j = 0; j < 256; ++j){v9 = (v4[j] + v9 + v11[j]) % 256;swap(v11[j], v11[v9]);}m = 0;v9 = 0;for (k = 0; k < data_len; ++k){m = (m + 3) % 256;v9 = (v9 + v11[m] + 1) % 256;swap(v11[m], v11[v9]);v5 = (v11[v9] + v11[m]) % 256;v4[k + 256] = v11[v5];}for (m = 0; ; ++m){result = m;if (m >= data_len)break;data[m] ^= v4[m + 256];}for (int i = 0; i < 27; i++)cout << (char)data[i];
}

这篇关于[HNCTF 2022 WEEK4]flower plus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047388

相关文章

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

【C++ Primer Plus习题】12.2

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "String.h"using namespace std;int main(){String s1(" and I am a

Mybatis Plus快速重构真批量sql入库操作

Mybatis快速重构真批量sql入库操作 基本思路 重构mybatis默认方法saveBatch和saveOrUpdateBatch的实现 基本步骤 真批量保存实现类InsertBatchMethod真批量更新实现类MysqlInsertOrUpdateBath注册InsertBatchMethod和MysqlInsertOrUpdateBath到EasySqlInjector注册Eas

leetcode#66. Plus One

题目 Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. You may assume the integer do not contain any leading zero, except the number 0 itself. The digi

【C++ Primer Plus习题】12.1

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "Cow.h"using namespace std;int main(){Cow c1;Cow c2("老母牛", "喝奶"

上海大学《2022年836+915自动控制原理真题及答案》 (完整版)

Part1:2022年上海大学真题题目 学硕836 专硕915 Part2:2022年上海大学真题答案 学硕836 专硕915

《C Primer Plus》第10 章复习题和编程练习

目录 一、复习题二、编程练习 一、复习题 1. 下面的程序将打印什么内容? #include <stdio.h>int main(){int ref[] = {8, 4, 0 ,2};int *ptr;int index;for (index = 0, ptr = ref; index < 4; index++, ptr++){printf("%d %d\n", ref[in

【算法 2022】高效有用的机器学习算法和 Python 库

2022年已经到来,在此祝大家虎年大吉!2022年,下面几种机器学习算法和 Python 库将在未来更受欢迎!让我们花个几分钟一起来了解下: 一、CatBoost CatBoost 可能是最新的算法,因为它随着越来越流行而不断更新。这个机器学习算法对于处理分类数据的数据科学家特别有用。您可以考虑 Random Forest 和 XGBoost 算法的优点,CatBoost 具有它们的大部分优点

MyBatis-Plus 框架 QueryWrapper UpdateWrapper 方法修复sql注入漏洞事件

什么是漏洞? 漏洞是指软件、系统或网络中存在的安全弱点或错误,这些弱点可能导致系统遭受攻击或被不当使用。在计算机安全领域,漏洞通常源于编程错误、设计缺陷或配置失误。 对于对象关系映射(ORM)框架来说,漏洞通常指的是设计或实施中的安全问题,这些问题可能让应用程序面临SQL注入攻击的风险。 SQL 注入漏洞 如果ORM框架在执行SQL操作时没有正确过滤或转义用户输入,攻击者可以利用输入的恶意数据