九州信泰杯 第十一届山东省网络安全技能大赛
MISC
1.签到
这是真签到,下载后即可得到flag
2.ezpic
打开后,这是一个
给了一张图片
然后拖到010里面,在末尾找到了一半flag
另一半打开打stegsloves
通过改变背景颜色
然后在里面找到了一个二维码
扫码后得到flag的另一半
最后拼接
flag{cf74bc8a2233179ea73b2de7499d614c}
3.简单编码
下载打开后,是一串莫名其妙的字符串
DJ?EL@b`ddd_Cdf@Ada?dbBe`fegdfgfAgC__N
但是提示呢是60=?+?
我寻思着还需要密码呢
然后我就先放在随波逐流一把梭
然后就发现了Rot47解出来了
synt{o315550r57op52n53q617685787p8r00}
然后看着就像flag
提交后不对,我用这个密码再随波逐流一下flag,
解出来Rot13 是flag
原来60=47+13
flag{b315550e57bc52a53d617685787c8e00}
4.异常的流量
流量打开后,怎么找都没有结果
然后看到了每一个协议都有一堆01组成的字符串
然后我就用kali里的strings 爆一下,然后
得到一堆010二进制
复制,去重,然后想到0,1转图片
可以使用随波逐流转换
得到一张缺三个定位符的二维码
拼接好定位符扫描就得到了flag
(可以利用截图软件配合PS拼接)
5.Bad_File
此题0解
Crypto
1.古典之美
下载后得到了一串类似凯撒的密码
yzabliviiszwve{blbekmnehedtmltfxrhsxhn}
由于本题提示说是凯撒但不完全是凯撒,
所以很有可能是凯撒密码+其他古典密码
而且很有可能是栅栏密码
所以可以放在随波逐流试一下
先凯撒解码,得到了一堆
感觉不行,先栅栏,后凯撒
得到flag
2.ezrsa
两部分组成然后就是
第一步是共模攻击
e1=80920036383271456884731855336908733674195076693352034421030167209168902043240854199888480335276421339155718769136889123734232796673751140527221307207186454156407008720310617805470953605756132383224775816963902169094699618940013911651166503289778627221433656915409322475116356353350793878043745984958915725409
e2=157337742803331381707081104614454139190613421935352344920505563873685572272242119454127715194230070940347536180008189854595839912376034798866664253771618394211437495972597736804857988149726925535444122269369965629542777858719379779679815711307098468031224114336467296001869919652928981505105646315343295989427
e3=151331577311347503650846083374010150290906101190738833999466725504697974581495397221270183896187584673115938288608973023886805812169979614967681838139083032975919276529255845404290715796754552934999621703591626085061263391854538063387400073347900311137920583193874365088731350266894302011814131654974587179897
n=51338292824921384374308264590499958387946036614411779883318535786370969601482494580681728663336755028116825350816416100820453720355911410549734249826843836189313922491268355913821168841949406825118920329426705711705902956786893606291260087119946695940831654741542964069506046490382369164425204539432893855733
c1=7148075358989846285612326649007789216851402092960404815359454478003554023208108349883355640642248538922028451907404797848317571212117289210187441418893611533486201563941544606393403051337184135949095977026090524113823052449209516894275200159337705771127304599909614996858029583203403908549208158026963739180
c2=4335905186349696070952095695051853331216663315249835435738962846976303760642191996244508865679564436777897150011370798875139018288313167929390573486759776910250901605455263936407782280439958696819918483187423257560402666877085156610075743550424083860953236635335194590102141504569701375592873975728026223579
c3=27263930231060685132398996882061585062008690477607569983739548802641704375569521897902696700434075189787034098033516863910388773463085919793680835197198451279918918308913436410104901826031716332322782356608204297641182728876358287859590282497410888271620074087218600802531724944075591372084167471246524545802
higt_p=10496606133250924650973408422392393213195790115730683500477279237006896932591095256261821093956361110796894672841404707169736391999119446226993558226731008
n2=126321430715320565623904437839115230261205837249354771464583438511377310531639176358316274491109984618835180768627424997725195207206583538100767801124581853089219806998538717189795440969518448523591407979173233041366830288720636642028104875845058885442061904337652654949102797542545797325381718940999480888577
c4=15529343657569780107610070210436681112536871252739837525139520316873436881058428771383013443820335831300897616382026635350080680326788599288570752965797436746605522190493656877557700681552496659429667861396285774594350142920136601270601560594260360319781439596125688864142583877800794877701048702096999102587
from gmpy2 import *
from Crypto.Util.number import *
def gongmo(n, c1, c2, e1, e2):
def egcd(a, b):
if b == 0:
return a, 0
else:
x, y = egcd(b, a % b)
return y, x - (a // b) * y
s = egcd(e1, e2)
s1 = s[0]
s2 = s[1]
# 求模反元素
if s1 < 0:
s1 = - s1
c1 = invert(c1, n)
elif s2 < 0:
s2 = - s2
c2 = invert(c2, n)
m = pow(c1, s1, n) * pow(c2, s2, n) % n
return m
result = gongmo(n, c1, c3, e1, e3)
print(long_to_bytes(result))
第二部分通过coppersmith攻击
n = n2
p_fake = higt_p
pbits = p_fake.nbits()
kbits = 128 # p失去的低位
pbar = p_fake & (2 ^ pbits - 2 ^ kbits)
print("upper %d bits (of %d bits) is given" % (pbits - kbits, pbits))
PR.<x> = PolynomialRing(Zmod(n))
f = x + pbar
x0 = f.small_roots(X=2 ^ kbits, beta=0.4)[0] # find root < 2^kbits with factor >= n^0.3
print(x0 + pbar)
p = 10496606133250924650973408422392393213195790115730683500477279237006896932591095256261821093956361110796894672841404976806452900489014635582796372762571837
q = n2 // p
e = 68
phi = (p-1) * (q-1)
d = gmpy2.invert(e // 4, phi)
m = pow(c4, d, n2)
m = gmpy2.iroot(m,4)[0]
print(long_to_bytes(m))
3.格格格格
没做出来
Web
1.fly_car
由于现在没有靶场,没有图片还原
进去之后是一个开飞机的游戏,通关后,会告诉你去访问rankrankrank.php的文件
访问后告诉你只有admin才能进入,
直接抓包修改cookie 即可得到flag
2.ezmaze
没做出来
3.postpone
此题零解
Re
1.exchange
没做出来
2.rand
没做出来
Pwn
1.ezpwn
没做出来
2.Rust_but_Signin
没做出来
工业互联网
1.Busss
一个流量包
追踪流发现
是零散的flag
最后拼接得到flag
2.oldMachine
此题零解
数据安全
1.数据脱敏
里面有三个txt文本,提示,任务信息,和脱敏要求
datas = open('person.txt', 'r', encoding='utf8').readlines()
out = open('out2.txt', 'w', encoding='utf8', newline='\n')
for i in datas:
name, id, tel = i.split(',')[:3]
name = name[0] + '*' + name[2:]
id = id[:6] + '*' * 8 + id[-4:]
tel = tel[:3] + '*' * 4 + tel[-5:-1]
out.write(f"{name},{id},{tel}\n")
手动把最后一行的9937改成9473
再linux使用命令
md5sum file.txt
就可以查看文件的md5值
最后得到md5为:
76e2f5c0b24aae33b918d82414d5c76d
2.data_analy
没做出来