首页 > 其他分享 >cyi 源鲁杯2024第一轮wp

cyi 源鲁杯2024第一轮wp

时间:2024-10-23 21:13:49浏览次数:1  
标签:df 2024 flag wp test import cyi csv Round

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 invert

c = 2924474039245207571198784141495689937992753969132480503242933533024162740004938423057237165017818906240932582715571015311615140080805023083962661783117059081563515779040295926885648843373271315827557447038547354198633841318619550200065416569879422309228789074212184023902170629973366868476512892731022218074481334467704848598178703915477912059538625730030159772883926139645914921352787315268142917830673283253131667111029720811149494108036204927030497411599878456477044315081343437693246136153310194047948564341148092314660072088671342677689405603317615027453036593857501070187347664725660962477605859064071664385456
p = 112201812592436732390795120344111949417282805598314874949132199714697698933980025001138515893011073823715376332558632580563147885418631793000008453933543935617128269371275964779672888059389120797503550397834151733721290859419396400302434404551112484195071653351729447294368676427327217463094723449293599543541
q = 177020901129489152716203177604566447047904210970788458377477238771801463954823395388149502481778049515384638107090852884561335334330598757905074879935774091890632735202395688784335456371467073899458492800214225585277983419966028073512968573622161412555169766112847647015717557828009246475428909355149575012613

n = p * q
phi = (p - 1) * (q - 1)

for e in range(55555, 66666):
    if GCD(e, phi) != 1:
        continue
    d = 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 requests

def 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 s

n1=
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 = 152715809540018210476585794506755656304018419053948315845024020442944919163424223089911596424947890322440115812073982242024003568582438886041563636295260718520579341235023201649280953992781776747918771204104127874320443126139004728988091615072560392886456699262578469698870106391640100933195833135586571108071

p2 = 122281872221091773923842091258531471948886120336284482555605167683829690073110898673260712865021244633908982705290201598907538975692920305239961645109897081011524485706755794882283892011824006117276162119331970728229108731696164377808170099285659797066904706924125871571157672409051718751812724929680249712137
q2 = 164145170653883024647553629463737123010827979171828830103523021501297388761756036648096075592988518245508893542122459154529428778971624332785030551503124716064026198761937539065927958768419405758793987137195172361163960622671936646689220816452043219075732911538605192466301352357559388894114979459113315335423
phi1 = (p1 - 1) * (q1 - 1)
phi2 = (p2 - 1) * (q2 - 1)

c2 = 12870694735548290866897639823672353371259339057761805824639632908565936588212576228170701561894938714624019797214256315619791127774911578660863180776914038219073243852067758972965837654176939513411220900256906892671727332530559672859911435188203655483295073730944835188398956395704453835920160070478734582194350774731015758752651764286801746471308589338823535488053653255016284611927915846869319917353182058315137707765063243187448090766762073836454333735044002500383946976916388370472148122113256884693336433185941799945776508628779804064191876873643116471914986013620650152736214320352131610081946978231932382638533

d2 = 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 = 0
    for eq in r:
        if "+" in eq and "=" in eq:
            f2 = 0
            a, b, c = 0, 0, 0
            eq = 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 += 1
            if 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 + 1
    ans = solve((eq1, eq2, eq3), (x, y, z))
    print ans
    s.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())

标签:df,2024,flag,wp,test,import,cyi,csv,Round
From: https://www.cnblogs.com/xhzccy/p/18498327

相关文章

  • 2024.6.29
    2024.6.29T1题面给定一个序列\(a\),从中若干个数,第\(i\)个元素有\(p_i\)的概率被选中,每个元素是否被选中之间是相互独立的。如果\(b\)的异或和为\(s\),称它的权值为\(s^2\),求\(b\)的权值的期望。答案对\(10^9+7\)取模。题解因为是异或操作,我们可以转到二进制......
  • 20222415 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容本周学习了后门技术,包括后门的概念和实现方式,学习了后门攻击的过程和实践;并且初步学习了免杀。2.实验过程2.1使用netcat获取主机操作Shell,cron启动某项任务(1)使用netcat获取主机操作虚拟机登录root,主机在cmd窗口输入ncat.exe-l-p8888Linux虚机输入指令nc192.16......
  • 2024智能机器人与自动控制国际学术会议 (IRAC 2024) 2024 International Conference on
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍2024智能机器人与自动控制国际学术会议(IRAC2024)由华南理工大学主办,会议将于2024......
  • CSP-J 2024 游记
    CSP-J2024游记Day\(-3\)忐忑不安地期待。做了一套模拟。ProblemScoreDifficultiesA\(100\)入门B\(50\)(贪心策略错了)普及-C\(50\)(双重循环\(n<=10^5\))普及D\(20\)(dp+前缀和,我写的DFS)普及+B题交完废了,幸好后面\(2\)题还行,总分......
  • cyi 源鲁杯2024第二轮wp
    Round2Web[Round2]Cmnts查看源码,base64解码得到路径get_th1s_f1ag.phpparse_str($_SERVER['QUERY_STRING']);#将url?后面的字段截取,并分别设置成变量(变量覆盖)主要逻辑在这块(感觉应该是想考变量覆盖的,但是好像代码写错了?)if(isset($key)&&$key==='a7a795a8efb7......
  • 2024秋软工实践《先天软工圣体队》团队展示与《卷卷福》选题报告
    一、开头表格软件工程课程班级链接作业要求第一次团队作业作业目标开发一个基于LLM大模型接口的软件,为传统的软件赋予全新的体验和功能。团队名称先天软工圣体队团队成员学号-名字102201312-陈言泷052206123-柯鸿毅102201531-周炳辉102201313-陈尚冰10......
  • 2024.10.23训练记录
    上午NOIP模拟A简单题。类比树状数组,反向做二维前缀和。在数组中对于左上角为{x_1,y_1},右下角为{x_2,y_2}的矩阵实现+k操作。只需要在{x_1,y_1},{x_2+1,y_2+1}位置+k,{x_2+1,y_1},{x_1,y_2+1}位置-k。最后再做一遍二维前缀和。很好想到的。想到是应该的。考试......
  • 2024秋软工实践 第二小组团队展示与选题报告
    作业所属课程https://edu.cnblogs.com/campus/fzu/SE2024作业要求https://edu.cnblogs.com/campus/fzu/SE2024/homework/13290作业的目标初步决定大作业选题,并进行需求分析和答辩团队名称旺仔水饺102201140黎曼102201130黄俊瑶102201127罗永辉102201......
  • 20241023 模拟赛总结
    期望得分:100+100+0+20=220实际得分:100+0+0+0=100(满昏)这算哪门子信心赛……分挂没了,懒得喷。T1人机分类讨论题。T2一眼二分答案,二分最终的最小的最大值,记bi表示把i这个位置加到至少ai需要多少次,然后手玩不知道多少组发现每个位置至少要操作一次,那机器人的启动位置是无......
  • 2024年人工智能、数字媒体技术与交互设计国际学术会议(ICADI 2024)
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍2024年人工智能、数字媒体技术与交互设计国际学术会议(ICADI2024)由天津职业技术......