2023香山杯re复现

2023-10-16 06:52
文章标签 2023 复现 re 香山

本文主要是介绍2023香山杯re复现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

还是搞一个本地的和云端的比较好

这次的题目比较简单,但是还是会这里那里出现一点小问题

w学长说:安卓的题目变化比较多,so中找函数或者资源文件里面找函数(有的main函数从so文件中加载出来)

学到的知识点:

* 文件修改可以先尝试尝试修改后缀(哭)
* 一个题目的内部文件找不到的时候,可以试试用其他工具打开
* xxtea解密脚本

#include <stdio.h>
#include <stdint.h>
#include <string.h>#define DELTA 0x9e3779b9void xxtea_encrypt(uint32_t *v, int n, uint32_t *key) {uint32_t y, z, sum;int p, rounds, e;rounds = 6 + 52 / n;sum = 0;y = v[n - 1];do {sum += DELTA;e = (sum >> 2) & 3;for (p = 0; p < n - 1; p++) {y = v[p + 1];z = v[p] += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (key[p & 3 ^ e] ^ z);}y = v[0];z = v[n - 1] += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (key[n % 4 ^ e] ^ z);} while (--rounds);
}void xxtea_decrypt(uint32_t *v, int n, uint32_t *key) {uint32_t y, z, sum;int p, rounds, e;rounds = 6 + 52 / n;sum = rounds * DELTA;y = v[0];do {e = (sum >> 2) & 3;for (p = n - 1; p > 0; p--) {z = v[p - 1];v[p] -= (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (key[p & 3 ^ e] ^ z);y = v[p];}z = v[n - 1];v[0] -= (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (key[p & 3 ^ e] ^ z);y = v[0];sum -= DELTA;} while (--rounds);
}int main() {uint32_t key[4] = {12345678 ,12398712 ,91283904 ,12378192};uint32_t data[] = {689085350 ,626885696 ,1894439255 ,1204672445 ,1869189675 ,475967424 ,1932042439 ,1280104741 ,2808893494};int data_len = sizeof(data) / sizeof(data[0]);printf("Original Data:\n");for (int i = 0; i < data_len; i++) {printf("%u\n", data[i]);}xxtea_decrypt(data, data_len, key);printf("Decrypted Data (Printable Characters):\n");for (int i = 0; i < data_len; i++) {char c = (char)data[i];printf("%c%c%c%c",*((char*)&data[i]+0),*((char*)&data[i]+1),*((char*)&data[i]+2),*((char*)&data[i]+3));//这个地方也是很重要的}printf("\n");return 0;
}


URL从哪儿来

这个题目是一个文件操作

写入文件操作,先是获取句柄,加载资源数据,给数据分配内存,然后把内容写入文件中,这里lpAddress就是写入的数据,

这里有一个判断,如果v7[i]不是0或者120,就异或120之后再写入,否则直接等于,这里不需要进行处理操作,等它写入文件,直接看文件的数据就行

动态调试,在c盘对应目录下找到文件

动态调试,找到如下目录:

里面搜索ou文件,用记事本打开看是MZ开头,也就是PE文件

这里出现了一个重要的问题,应该直接改后缀的,但是我把文件内容用记事本打开,然后准备新建一个exe文件,结果就出问题了!!!它一直报错,显示不是Window的文件

后面才知道是要直接将后缀改了

拿到文件就好分析了

先是一个debase64函数,解密base64

下面有一个rc4加密操作

对v33数据进行处理

接下来是一个发送网络请求的操作,不过rc4和发送网络请求的操作没有对解题没有实际作用

在debase64处下断点,动态调试,就出来了

hello_py

![image](assets/image-20231015183740-k7vbvfm.png)

是一个apk文件,用jadx打开,可以看到大致思路,调用pyhon语言的sayHello函数,然后进行一个判断

这些都好理解,现在最重要的就是找出sayHello函数,看看里面有哪些操作

,但是找遍了都没找到!!!!

最后在w学长提醒下搞出来在这里看到

注意!!!!这里实际上使用jeb可以直接找到(大哭!!!!!),下面使用jeb工具来看看(jeb下载4.32的最好,其他版本容易闪退)

把hello.py打开看到里里面是xxtea加密,有点混淆,但是可以看到它的特征(红色部分),下面绿色部分是加密用的key换和加密后的数据

找到了数据,下面用脚本解密

#include <stdio.h>
#include <stdint.h>
#include <string.h>#define DELTA 0x9e3779b9void xxtea_encrypt(uint32_t *v, int n, uint32_t *key) {uint32_t y, z, sum;int p, rounds, e;rounds = 6 + 52 / n;sum = 0;y = v[n - 1];do {sum += DELTA;e = (sum >> 2) & 3;for (p = 0; p < n - 1; p++) {y = v[p + 1];z = v[p] += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (key[p & 3 ^ e] ^ z);}y = v[0];z = v[n - 1] += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (key[n % 4 ^ e] ^ z);} while (--rounds);
}void xxtea_decrypt(uint32_t *v, int n, uint32_t *key) {uint32_t y, z, sum;int p, rounds, e;rounds = 6 + 52 / n;sum = rounds * DELTA;y = v[0];do {e = (sum >> 2) & 3;for (p = n - 1; p > 0; p--) {z = v[p - 1];v[p] -= (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (key[p & 3 ^ e] ^ z);y = v[p];}z = v[n - 1];v[0] -= (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (key[p & 3 ^ e] ^ z);y = v[0];sum -= DELTA;} while (--rounds);
}int main() {uint32_t key[4] = {12345678 ,12398712 ,91283904 ,12378192};uint32_t data[] = {689085350 ,626885696 ,1894439255 ,1204672445 ,1869189675 ,475967424 ,1932042439 ,1280104741 ,2808893494};int data_len = sizeof(data) / sizeof(data[0]);printf("Original Data:\n");for (int i = 0; i < data_len; i++) {printf("%u\n", data[i]);}xxtea_decrypt(data, data_len, key);printf("Decrypted Data (Printable Characters):\n");for (int i = 0; i < data_len; i++) {char c = (char)data[i];printf("%c%c%c%c",*((char*)&data[i]+0),*((char*)&data[i]+1),*((char*)&data[i]+2),*((char*)&data[i]+3));//这个地方也是很重要的}printf("\n");return 0;
}

先记到这里,最后一题是虚拟机,搞出来再补充

这篇关于2023香山杯re复现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

2023 CCPC(秦皇岛)现场(第二届环球杯.第 2 阶段:秦皇岛)部分题解

所有题目链接:Dashboard - The 2023 CCPC (Qinhuangdao) Onsite (The 2nd Universal Cup. Stage 9: Qinhuangdao) - Codeforces 中文题面: contest-37054-zh.pdf (codeforces.com) G. Path 链接: Problem - G - Codeforces

【vulhub】thinkphp5 2-rce 5.0.23-rce 5-rce 漏洞复现

2-rec 1.启动环境  cd /.../vulhub/thinkphp/2-rce # cd进入2-rce靶场文件环境下docker-compose up -d # docker-compose启动靶场docker ps -a # 查看开启的靶场信息 2.访问192.168.146.136:8080网页 3.构造payload http

【漏洞复现】赛蓝企业管理系统 GetJSFile 任意文件读取漏洞

免责声明:         本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规或服务协议。同时,未经授权地访问系统、网络或应用程序可能导致法律责任或其他严重后果。作者不对读者基于本文内容而产生的任何行为或后果承担

013.Python爬虫系列_re正则解析

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

深度学习每周学习总结N9:transformer复现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 多头注意力机制前馈传播位置编码编码层解码层Transformer模型构建使用示例 本文为TR3学习打卡,为了保证记录顺序我这里写为N9 总结: 之前有学习过文本预处理的环节,对文本处理的主要方式有以下三种: 1:词袋模型(one-hot编码) 2:TF-I