cyi 源鲁杯2024第一轮wp

news/2024/10/23 21:12:51/文章来源:https://www.cnblogs.com/xhzccy/p/18498327

Round 1

Misc

[Round 1] hide_png

stegsolve黑白通道(需要自己适当调整大小),然后丁真

YLCTF{a27f2d1a-9176-42cf-a2b6-1c87b17b98dc}

[Round 1] plain_crack

给了build.py和初始的build,

压缩后发现两个文件一样,且加密算法为zipcrypto,考虑明文攻击

APCHPR,得到秘钥就可以停了

使用bkcrack提取,提取后是deflate压缩模式,使用bkcrack的inflate.py解压缩

打开word里有个假flag,word本质是zip,将后缀改成zip并解压

word-->media-->得到flag

YLCTF{a709598c-f54c-4db5-ab69-8ddb499df053}

[Round 1] pngorzip

方法一:stegsolve

将多余数据移除

方法二:zsteg

提取对应通道的信息

zsteg -e b1,rgb,lsb,xy out.png > 1.zip

压缩包,注释提示114514????

掩码攻击

YLCTF{d359d6e4-740a-49cf-83eb-5b0308f09c8c}

[Round 1] trafficdet

喂给gpt

模型训练,通过train.csv所有标签及其lable进行训练,使用test.csv进行模拟,最后输出仅有id和label答案的csv

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier# 加载数据
train_df = pd.read_csv("D:\\contest\\attachments\\train.csv")
test_df = pd.read_csv("D:\\contest\\attachments\\test.csv")# 删除不必要的列
train_df.drop('Src Port', axis=1, inplace=True)
test_df.drop('Src Port', axis=1, inplace=True)# 分离特征和标签
X = train_df.drop('Label', axis=1)
y = train_df['Label']# 特征缩放
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X_test_scaled = scaler.transform(test_df)# 训练模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_scaled, y)# 预测测试集
y_test_pred = model.predict(X_test_scaled)# 创建提交文件
submission_df = pd.DataFrame({'id': test_df.index, 'Label': y_test_pred})
submission_df.to_csv('submission.csv', index=False)

[Round 1] 乌龟子啦

base64解码得到长图片,放大发现是01

在线ocr:图片转文字在线 - 图片文字提取 - 网页OCR文字识别 - 白描网页版 (baimiaoapp.com)

对于连续的01,识别有问题,自己缝缝补补又一题

随便放大缩小,发现是二维码

宽高知道(180x180),1--黑,0--白

YLCTF{f6a6f8cf-c25b-49a8-8f17-c8fbd751faa4}

[签到] 打卡小能手

公众号启动



Web

[Round 1] Disal

robots.txt

php特性题

a:大于999999+至少6个字母

b:numeric函数特性

[Round 1] Injct

ssti,fenjing 一把梭,无回显,使用dns外带

[Round 1] shxpl

经典命令执行,fuzz发现&没过滤,ls被ban了,用dir

再fuzz一下读取文件的函数,发现空格被ban了

nl可以,%09可以

得到源码

查看根目录

过滤了flag、?、*

用正则匹配



Reverse

[Round 1] xor

upx脱个壳先

简单的异或

list1=[0x45,0x50,0x5f,0x48,0x5a,0x67,0x7d,0x28,0x29,0x2d,0x25,0x29,0x29,0x2c,0x31,0x7d,0x7f,0x24,0x28,0x31,0x28,0x7f,0x7e,0x7e,0x31,0x25,0x25,0x7f,0x7f,0x31,0x2f,0x7d,0x28,0x2c,0x2c,0x2e,0x2b,0x7d,0x28,0x28,0x79,0x78,0x61,0x1c]
for i in range(43):print(chr(list1[i]^0x1C),end='')

[Round 1] ezgo

全都是go的一些临时变量,主要加密逻辑就是异或,+53并异或

list = [108, 122, 116, 108, 127, 65, 11, 94, 91, 90, 90, 116, 34, 38, 110, 38, 35, 118, 114, 101, 125, 47, 114, 45, 96,118, 124, 49, 105, 127, 103, 49, 51, 97, 110, 62, 96, 108, 105, 108, 104, 105, 34]
len = len(list)
for i in range(len):print(chr(list[i] ^ (i + 53)), end='')



Crypto

[Round 1] BREAK

p,q给了,爆破e,直接加解密

# encoding:utf-8
from Crypto.Util.number import *
from gmpy2 import invertc = 2924474039245207571198784141495689937992753969132480503242933533024162740004938423057237165017818906240932582715571015311615140080805023083962661783117059081563515779040295926885648843373271315827557447038547354198633841318619550200065416569879422309228789074212184023902170629973366868476512892731022218074481334467704848598178703915477912059538625730030159772883926139645914921352787315268142917830673283253131667111029720811149494108036204927030497411599878456477044315081343437693246136153310194047948564341148092314660072088671342677689405603317615027453036593857501070187347664725660962477605859064071664385456
p = 112201812592436732390795120344111949417282805598314874949132199714697698933980025001138515893011073823715376332558632580563147885418631793000008453933543935617128269371275964779672888059389120797503550397834151733721290859419396400302434404551112484195071653351729447294368676427327217463094723449293599543541
q = 177020901129489152716203177604566447047904210970788458377477238771801463954823395388149502481778049515384638107090852884561335334330598757905074879935774091890632735202395688784335456371467073899458492800214225585277983419966028073512968573622161412555169766112847647015717557828009246475428909355149575012613n = p * q
phi = (p - 1) * (q - 1)for e in range(55555, 66666):if GCD(e, phi) != 1:continued = invert(e, phi)m = pow(c, d, n)flag = long_to_bytes(m)if 'YLCTF' in flag:print flag

[Round 1] signrsa

主要的加密逻辑

c = pow(m,e,n1)
c = pow(c,e,n2)

两个n都可用factordb进行大素数分解,填入n1,n2进行分解,得到对应p、q

import requestsdef queryFactors(n):s=[]url="http://factordb.com/api?query="+str(n)r = requests.get(url)factors=r.json()['factors']for f in factors:for i in range(f[1]):s.append(int(f[0]))return sn1=
n2=
print(queryFactors(n1))
print(queryFactors(n2))

一层一层进行rsa解密即可

# encoding:utf-8
from Crypto.Util.number import *
from gmpy2 import invert
e = 65537
n1 = 18674375108313094928585156581138941368570022222190945461284402673204018075354069827186085851309806592398721628845336840532779579197302984987661547245423180760958022898546496524249201679543421158842103496452861932183144343315925106154322066796612415616342291023962127055311307613898583850177922930685155351380500587263611591893137588708003711296496548004793832636078992866149115453883484010146248683416979269684197112659302912316105354447631916609587360103908746719586185593386794532066034112164661723748874045470225129298518385683561122623859924435600673501186244422907402943929464694448652074412105888867178867357727
n2 = 20071978783607427283823783012022286910630968751671103864055982304683197064862908267206049336732205051588820325894943126769930029619538705149178241710069113634567118672515743206769333625177879492557703359178528342489585156713623530654319500738508146831223487732824835005697932704427046675392714922683584376449203594641540794557871881581407228096642417744611261557101573050163285919971711214856243031354845945564837109657494523902296444463748723639109612438012590084771865377795409000586992732971594598355272609789079147061852664472115395344504822644651957496307894998467309347038349470471900776050769578152203349128951
p1 = 122281872221091773923842091258531471948886120336284482555605167683829690073110898673260712865021244633908982705290201598907538975692920305239961645109897081011524485706755794882283892011824006117276162119331970728229108731696164377808170099285659797066904706924125871571157672409051718751812724929680249712137
q1 = 152715809540018210476585794506755656304018419053948315845024020442944919163424223089911596424947890322440115812073982242024003568582438886041563636295260718520579341235023201649280953992781776747918771204104127874320443126139004728988091615072560392886456699262578469698870106391640100933195833135586571108071p2 = 122281872221091773923842091258531471948886120336284482555605167683829690073110898673260712865021244633908982705290201598907538975692920305239961645109897081011524485706755794882283892011824006117276162119331970728229108731696164377808170099285659797066904706924125871571157672409051718751812724929680249712137
q2 = 164145170653883024647553629463737123010827979171828830103523021501297388761756036648096075592988518245508893542122459154529428778971624332785030551503124716064026198761937539065927958768419405758793987137195172361163960622671936646689220816452043219075732911538605192466301352357559388894114979459113315335423
phi1 = (p1 - 1) * (q1 - 1)
phi2 = (p2 - 1) * (q2 - 1)c2 = 12870694735548290866897639823672353371259339057761805824639632908565936588212576228170701561894938714624019797214256315619791127774911578660863180776914038219073243852067758972965837654176939513411220900256906892671727332530559672859911435188203655483295073730944835188398956395704453835920160070478734582194350774731015758752651764286801746471308589338823535488053653255016284611927915846869319917353182058315137707765063243187448090766762073836454333735044002500383946976916388370472148122113256884693336433185941799945776508628779804064191876873643116471914986013620650152736214320352131610081946978231932382638533d2 = invert(e, phi2)
d1 = invert(e, phi1)m1 = pow(c2,d2,n2)
m2 = pow(m1,d1,n1)flag = long_to_bytes(m2)
print flag

[Round 1] r(A)=3

用python sympy库进行多项式求解

有时候会EOF不知道为什么(运行多几次就行了)

import socket
from sympy import *hostname = 'challenge.yuanloo.com'
port = 37852
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
x, y, z = symbols('x,y,z')
while True:eq1, eq2, eq3 = "", "", ""ans = {}r = s.recv(1024).decode()print(r)if "function" in r and len(r) <= 15:r = s.recv(1024)while len(r) <= 55:r += s.recv(1024)print(r)r = r.split("\n")f1 = 0for eq in r:if "+" in eq and "=" in eq:f2 = 0a, b, c = 0, 0, 0eq = eq.split("=")right = int(eq[1])shizi = eq[0].split("+")for num in shizi:num = num.split("*")if f2 == 0:a = int(num[0])elif f2 == 1:b = int(num[0])else:c = int(num[0])f2 += 1if f1 == 0:eq1 = Eq((a * x + b * y + c * z), right)elif f1 == 1:eq2 = Eq((a * x + b * y + c * z), right)else:eq3 = Eq((a * x + b * y + c * z), right)f1 = f1 + 1ans = solve((eq1, eq2, eq3), (x, y, z))print anss.sendall((str(ans[x]) + '\n').encode())r = s.recv(1024)s.sendall((str(ans[y]) + '\n').encode())r = s.recv(1024)s.sendall((str(ans[z]) + '\n').encode())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/820855.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学期2024-2025-1 学号20241424 《计算机基础与程序设计》第5周学习总结

学期2024-2025-1 学号20241424 《计算机基础与程序设计》第5周学习总结 作业信息 |这个作业属于2024-2025-1-计算机基础与程序设计)| |-- |-- | |这个作业要求在|(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05))| |这个作业的目标|<参考上面的学习总结模板,把学…

立博为证

12345我他妈要是再在没仔细思考一个小时之前就瞎几把看讨论区和标签,然后看到一些若有若无的傻逼言论,然后瞎几把看题解我就吃屎,天天做题是他妈让你瞎看标签和讨论浪费好题的? 原因如图

2024秋软工实践 第二小组团队展示与选题报告

作业所属课程 https://edu.cnblogs.com/campus/fzu/SE2024作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13290作业的目标 初步决定大作业选题,并进行需求分析和答辩团队名称 旺仔水饺102201140 黎曼 102201130 黄俊瑶102201127 罗永辉 102201130 郑哲浩10220…

顶点着色网格转换为 UV 映射的纹理化网格

简介 顶点着色是一种将颜色信息直接应用于网格顶点的简便方法。这种方式常用于生成式 3D 模型的构建,例如 InstantMesh。然而,大多数应用程序更偏好使用 UV 映射的纹理化网格。 本教程将介绍一种快速的解决方案,将顶点着色的网格转换为 UV 映射和纹理化的网格。内容包括 [简…

植物大战僵尸的制作(不定时更新)

不定时更新植物大战僵尸的制作 [点击直达github](1zero0/PlantVSZombies: 学习制作植物大战僵尸并熟悉Unity) 1.创建项目 点击右上角新项目选择2D(built-In Render Pipeline)(红色箭头),修改自己项目的名字(蓝色箭头),选择自己想要的地址(绿色箭头)2.项目 将资源包(…

AJAX发送请求

AJAX发送请求 ◼ AJAX 是异步的JavaScript 和 XML(Asynchronous JavaScript And XML)它可以使用JSON,XML,HTML 和text 文本等格式发送和接收数据; ◼ 如何来完成AJAX请求呢?第一步:创建网络请求的AJAX对象(使用XMLHttpRequest)第二步:监听XMLHttpRequest对象状…

实验二 类和对象_基础编程1

实验任务一:#pragma once#include <string>// 类T: 声明 class T { // 对象属性、方法 public:T(int x = 0, int y = 0); // 普通构造函数T(const T &t); // 复制构造函数T(T &&t); // 移动构造函数~T(); // 析构函数void adjust(int ra…

第二章学习笔记

第2章 模型评估与选择 2.1 经验误差与过拟合 错误率(error rate):分类错误的样本数占样本总数的比例称为错误率。 精度(accuracy):精度 = 1 - 错误率。 如果在m个样本中有a个样本分类错误,那么错误率,精度 = 1 - E。 学习器的实际预测输出与样本的真实输出之间的差异称为误…

food

厨具使用 高压锅使用详细参考和评论区:https://www.bilibili.com/video/BV1wr4y1n7Ej/?spm_id_from=333.337.search-card.all.click&vd_source=5e8f069711510b3788382a0a03ff38e5本文来自博客园,作者:我爱读论文,转载请注明原文链接:https://www.cnblogs.com/life131…

超千款鸿蒙原生游戏上架,华为游戏中心成就非凡游戏体验

10月22日,原生鸿蒙之夜暨华为全场景新品发布会在深圳举行,华为正式为用户带来全新的原生鸿蒙操作系统(HarmonyOS NEXT),这是HarmonyOS诞生以来最大的更新。发布会公布了当前HarmonyOS NEXT整体应用生态的进展,其中鸿蒙游戏领域令人瞩目。以《王者荣耀》、《和平精英》、《…

# 20222402 2024-2025-1 《网络与系统攻防技术》实验二实验报告

1.实验内容 本周学习内容 ①Shellcode技术 ②后门概念:后门就是不经过正常认证流程而访问系统的通道。 ③后门案例:XcodeGhost等。 ④后门技术:狭义后门:特指潜伏于操作系统中专门做后门的一个程序,“坏人”可以连接这个程序,远程执行各种指令。 管控功能实现技术 自启动…