“科来杯”第十届山东省大学生网络安全技能大赛

WriteUp 9个月前 admin
114 0 0

“科来杯”第十届山东省

大学生网络安全技能大赛




“科来杯”第十届山东省大学生网络安全技能大赛

2023年10月22日,“科来杯”第十届山东省大学生网络安全技能大赛决赛拉开帷幕,齐鲁师范学院网络安全社团的22级同学作为本次的主力战队,勇往直前踔厉奋发。从早上九点到下午四点,在紧张激烈的七个小时里,师傅们认真专注,全力以赴,最终荣获高校团体三等奖。



WP


stego

我应该去爱你

最简单的misc

“科来杯”第十届山东省大学生网络安全技能大赛

数独

"".join(["".join([str(x) for x in i]) for i in (sudoku(matrix(ZZ,4,[0,0,0,0,2,0,0,0,0,0,1,0,0,4,0,3])))])

sagemath解一下数独

4132234132141423

得到的是cloacked-pixel的密码

“科来杯”第十届山东省大学生网络安全技能大赛

莫生气

jpg文件尾有个缺了文件头的PNG

补上16字节的文件头

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52

python3版本的bwm 双图盲水印

python3 /root/ctf/BlindWaterMark/bwmforpy3.py decode flag.jpeg 2.png flag.png

jpg在前大概会清楚点

“科来杯”第十届山东省大学生网络安全技能大赛

misc

复现没有远端环境,看不到签到

简单编码

0122 110001 0153 0172 1010010 1000101 061 1011010 1010111 1101100 1100100 1001000 0122 0124 1001110 0105 0124 110000 064 1111010 0121 060 0144 1011010 1001101 1101100 1010010 0110 0124 1010110 1110000 1010101 1010010 060 1000110 0141 0126 0105 1101100 0117 1010101 1101100 1100100 1001000 0127 0126 0154 1010101 0124 0125 065 0123 0126 1000101 1100011 060 1001101 110000 0122 0110 0124 1010110 1110000 1010111 1010010 110000 110000 0171 1010110 0105 0144 1001110 1010101 1101100 1100100 1001000 0127 0126 1110000 0125 1010101 1010101 061 0141 1010101 110000 1100100 1001110 1010111 1101011 1010010 1001000 0124 0153 0112 0125 1010010 110000 1101011 0172 0122 0105 110001 0117 1010101 0154 0132 1001000 1010111 0124 1001010 0105 0124 1010101 065 1001011 1010110 1000101 0143 110000 1010111 1101100 1010010 0124 0124 0154 0112 0127 1010010 110000 060 0171 1010010 0105 1100100 0117 0125 1101100 0144 1001000 1010100 0124 0116 1000101 1010010 110000 110101 1010011 1010101 060 0144 1001110 1001110 1000110 0122 1001000 1010100 1101100 1110000 1011001 0124 0126 0105 111001 1010000 1010100 060 071 1010000 1010100 060 111101 

2 8进制混合

print("".join(list(map(chr,[int(i,2if len(i)> 4   else  int(i,8)  for i in open('0db049060e56b4533427d8ec47624406.txt','r').read().split()]))))

神秘的base

EvAzEwo6E9RO4qSAHq42E9KvEv5zHDt34GtdHGJaHD7NHG42bwd=

神奇密码: xbQTZqjN8ERuwlzVfUIrPkeHd******LK697o2pSsGD+ncgm3CBh/Xy1MF4JAWta

这题很难绷得住,表是反的,非常怀疑是出题人出错了

找到缺的表 然后尝试爆破就行

import string
import itertools
import base64

raw_table = string.ascii_uppercase+string.ascii_lowercase +string.digits+"+/"
lack_table = "xbQTZqjN8ERuwlzVfUIrPkeHd******LK697o2pSsGD+ncgm3CBh/Xy1MF4JAWta"
lack = "".join([i for i in raw_table if i not in lack_table])

print(lack)
for i in itertools.permutations(lack, len(lack)):
    
    table = "xbQTZqjN8ERuwlzVfUIrPkeHd%sLK697o2pSsGD+ncgm3CBh/Xy1MF4JAWta""".join(i)
    cipher = "EvAzEwo6E9RO4qSAHq42E9KvEv5zHDt34GtdHGJaHD7NHG42bwd="
    flag = base64.b64decode(cipher.translate(str.maketrans(raw_table,table )))

    if all(chr(i) in string.ascii_lowercase+string.digits+"{}" for i in flag):
        print(flag.decode())

crypto

小试牛刀

print("".join([chr(ord(v)-3-i) for i,v in enumerate("ipfmx82Kj]p~l?x82ogwx85mt[Kx8brx97")]))

被称为”变异凯撒”的题型,不知道谁传出来的名字

easyRSA

先CRT恢复p_2

然后Factoring with High Bits Known(一般叫做p的高位泄露)

# sage

from Crypto.Util.number import *
di = [205329935991133380974880368934928321273274334866497850560640212079966358515253264739757264805981824344553014559883169314495359937742744429284762852853819407197513216256198287285250395397676269263194633662721082002304170457215979299327320085578355926571635267449373645191637310701821184698431287158634968374845899198238777199475748910296932106553167589292201037703513010563101692415826269513332238634715339876614712914152080415649334257376383174624240445796871873866383]
re = [1089689518412024137832698760088072000832905310104884410865120504385800130741324350315783786732127765031431317316350416093317305337601658930128225905610127953063624128824890885455759542416407733349800250500491187523622286133795566921325530458797445791149343512309062841331609983362758947025598537227237258899898721113182940657411879568554540209466136445723649693757315689763759472880579111333259199401268184590983152138914151404668567372986395904813351317555162]
p4 = CRT(re,di)
print(p4)
print(hex(p4))

n = 23074300182218382842779838577755109134388231150042184365611196591882774842971145020868462509225850035185591216330538437377664511529214453059884932721754946462163672971091954096063580346591058058915705177143170741930264725419790244574761160599364476900422586525460981150535489695841064696962982002670256800489965431894477338710190086446895596651842542202922745215496409772520899845435760416159521297579623368414347408762466625792978844177386450506030983725234361868749543549687052221290158286459657697717436496769811720945731143244062649181615815707417418929020541958587698982776940334577355474770096580775243142909913
e = 0x10001
p4 = p4 >>128
pbits = 1024
kbits = pbits - p4.nbits()
print(p4.nbits())
print(kbits)
p4 = p4 << kbits
PR.<x> = PolynomialRing(Zmod(n))
f = x + p4
roots = f.small_roots(X=2^kbits, beta=0.4)
if roots:        
    p = p4+int(roots[0])
    print ("p =", p)
    print ("q =", n/p)
    
p=  157397749849472741302651922559110947585741898399548366071672772026799823577871183957882637829089669634665699886533302712057712796808672023827078956556745522749244570015492585747076324258912525658578733402979835176037760966294532155059241756382643278063578661030876735794708282102407491782299777228899079176117
q=  146598666145389487374076474702380241089893944436923994466470555513748278755568038863819188404588602962888679358728628069490879689376996830110571995521814075973422513105805715524894550773219606972944401957227665252279176873209924236114228003156706532596699592716796867748104565680326123749660658940264843181589
c = 16054555662735670936425135698617301522625617352711974775378018085049483927967003651984471094732778961987450487617897728621852600854484345808663403696158512839904349191158022682563472901550087364635161575687912122526167493016086640630984613666435283288866353681947903590213628040144325577647998437848946344633931992937352271399463078785332327186730871953277243410407484552901470691555490488556712819559438892801124838585002715833795502134862884856111394708824371654105577036165303992624642434847390330091288622115829512503199938437184013818346991753782044986977442761410847328002370819763626424000475687615269970113178
n=p*q
phi_n=(p-1)*(q-1)

d=inverse(e,phi_n)

m=pow(c,d,n)
print(m)
print(bytes.fromhex(hex(m)[2:]).decode())

pkrsa(未解出)

看起来是PKCS5 v1.5对于padding的攻击

找到几篇文章

http://mslc.ctf.su/wp/google-ctf-spotted-wobbegong-crypto-100/

forensic

不太想做,就想写一下最抽象的那题的那步

小刘的硬盘

压缩包不写怎么来的了,取证大师一把梭

重点是这个压缩包密码

小刘喜欢用自己的名字+生日当密码

中文密码

“科来杯”第十届山东省大学生网络安全技能大赛
小刘19970325

网络安全社团公众号

微信号 : qlnu_ctf

新浪微博:齐鲁师范学院网络安全社团

“科来杯”第十届山东省大学生网络安全技能大赛

原文始发于微信公众号(齐鲁师院网络安全社团):“科来杯”第十届山东省大学生网络安全技能大赛

版权声明:admin 发表于 2023年10月25日 下午8:42。
转载请注明:“科来杯”第十届山东省大学生网络安全技能大赛 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...