本文主要是介绍2022首届“天权信安catf1ag”网络安全联合公开赛复盘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为前一段时间都在忙考证,近些天补一些文章吧
解题过程:
题目一 简单隐写
操作内容:
丢进kali binwalk 分离一下 得到一个加密的压缩包 内含flag.txt
使用jphs无密码得到一个txt
得到password:catf1agcatf1agcatf1ag
解压压缩包得到一串字符串
dbug1bh{KQit_x1o_Z0v_H3u_JU!!!}
凯撒位移一下得到flag
flag值:
catf1ag{JPhs_w1n_Y0u_G3t_IT!!!}
题目二 十位马
操作内容:
打开data文件,发现是十六进制
转成ASCII,发现熟悉字符png,但是是反的
用python脚本把它反过来,
with open('data','r') as f: s = f.readlines()[0] s = [s[i:i+2] for i in range(0,len(s),2)] s = ''.join(s[::-1]) with open('data.txt','w') as f1: f1.write(s) |
然后放入010editor保存为二进制文件
用binwalk分离一下
有100张图片,用ps拼接起来
应该是个二维码,添加上定位符
扫描得到flag
如该题使用自己编写的脚本请详细写出,不允许截图
with open('data','r') as f: s = f.readlines()[0] s = [s[i:i+2] for i in range(0,len(s),2)] s = ''.join(s[::-1]) with open('data.txt','w') as f1: f1.write(s) |
flag值:
flag{cbef4c93-5e9c-11ed-8205-666c80085daf}
题目三 疑惑
操作内容:
根据题目名字提示,直接将key1和key2的值做异或,然后拼接即可得到flag
如该题使用自己编写的脚本请详细写出,不允许截图
keys1 = "welcome_to_nine-ak_match_is_so_easy_!@!" keys2 = "20 4 24 5 94 12 2 36 26 6 49 11 68 15 14 114 12 10 43 14 9 43 10 27 31 31 22 45 10 48 58 4 18 10 38 31 14 97 92" keys2 = keys2.split(' ') flag = '' for i in range(len(keys1)): flag += chr(ord(keys1[i])^int(keys2[i])) print(flag) |
flag值:
catf1ag{nine-ak_match_is@very_easy_@/!}
题目四 ezrsa
操作内容:
其实出题者的考点是费马分解,但是不小心给了d,所以直接求m即可。
如该题使用自己编写的脚本请详细写出,不允许截图
import gmpy2 from Crypto.Util.number import * c = 11665709552346194520404644475693304343544277312139717618599619856028953672850971126750357095315011211770308088484683204061365343120233905810281045824420833988717463919084545209896116273241788366262798828075566212041893949256528106615605492953529332060374278942243879658004499423676775019309335825331748319484916607746676069594715000075912334306124627379144493327297854542488373589404460931325101587726363963663368593838684601095345900109519178235587636259017532403848656471367893974805399463278536349688131608183835495334912159111202418065161491440462011639125641718883550113983387585871212805400726591849356527011578 d = 12344766091434434733173074189627377553017680360356962089159282442350343171988536143126785315325155784049041041740294461592715296364871912847202681353107182427067350160760722505537695351060872358780516757652343767211907987297081728669843916949983336698385141593880433674937737932158161117039734886760063825649623992179585362400642056715249145349214196969590250787495038347519927017407204272334005860911299915001920451629055970214564924913446260348649062607855669069184216149660211811217616624622378241195643396616228441026080441013816066477785035557421235574948446455413760957154157952685181318232685147981777529010093 n = 13717871972706962868710917190864395318380380788726354755874864666298971471295805029284299459288616488109296891203921497014120460143184810218680538647923519587681857800257311678203773339140281665350877914208278709865995451845445601706352659259559793431372688075659019308448963678380545045143583181131530985665822655263963917413080872997526445384954610888776917323156325542921415838122754036103689148810677276471252057077595104724365967333418002158480223657363936976281758713027828747277980907153645847605403914070601944617432177385048803228970693240587900504431163155958465431312258451026447435473865563581029300541109 m = pow(c,d,n) flag = long_to_bytes(m) print(flag) import gmpy2 from Crypto.Util.number import * c = 11665709552346194520404644475693304343544277312139717618599619856028953672850971126750357095315011211770308088484683204061365343120233905810281045824420833988717463919084545209896116273241788366262798828075566212041893949256528106615605492953529332060374278942243879658004499423676775019309335825331748319484916607746676069594715000075912334306124627379144493327297854542488373589404460931325101587726363963663368593838684601095345900109519178235587636259017532403848656471367893974805399463278536349688131608183835495334912159111202418065161491440462011639125641718883550113983387585871212805400726591849356527011578 e = 65537 n = 13717871972706962868710917190864395318380380788726354755874864666298971471295805029284299459288616488109296891203921497014120460143184810218680538647923519587681857800257311678203773339140281665350877914208278709865995451845445601706352659259559793431372688075659019308448963678380545045143583181131530985665822655263963917413080872997526445384954610888776917323156325542921415838122754036103689148810677276471252057077595104724365967333418002158480223657363936976281758713027828747277980907153645847605403914070601944617432177385048803228970693240587900504431163155958465431312258451026447435473865563581029300541109 near_p = gmpy2.iroot(n,2)[0] while n%near_p !=0: near_p = gmpy2.next_prime(near_p) p = near_p q = n//p phi = (q-1)*(p-1) d = gmpy2.invert(e,phi) m = pow(c,d,n) flag = long_to_bytes(m) print(flag) |
flag值:
flag{3895dfda-67b1-11ed-b784-b07b2568d266}
题目五 passwd
操作内容:
将密文69d00d9bc39e01687abf84e98e27c889cf1442b53edba27d3235acbeb7b0ae95直接丢到cmd5解密得到
202211121750
如该题使用自己编写的脚本请详细写出,不允许截图
flag值:
catf1ag{202211121750}
题目六 history
(题目序号请参考解题总榜上面的序号)
操作内容:
发现grafana版本是8.30,存在任意文件读取漏洞
根据题目history,直接去读取历史命令,发现flag在/home/grafana/下面
直接读取flag
编写的脚本请详细写出,不允许截图
flag值:
flag{b0e5ab30e5e65284361a94ea1af443ff}
题目七 遗失的物品
操作内容:
binwalk分离 apk 得到dex文件,发现flag源代码
将其值带入解密RSA得到C=15318
发现代码将flag与c做拼接,并且做了两次hex以及一次base64
然后在resources.arsc文件中发现疑似base64字符串
MzMzNjMzMzMzMzM2MzMzMTMzMzczMzM0MzMzNjMzMzYzMzMzMzMzMTMzMzYzMzMxMzMzNjMzMzczMzM3MzYzMjMzMzYzMzMyMzMzNjMzMzIzMzM2MzMzNDMzMzYzMzM1MzMzNjMzMzMzMzM2MzMzNjMzMzYzMzM2MzMzMzMzMzgzMzMzMzMzNzMzMzMzMzMwMzMzNjMzMzQzMzMzMzMzNDMzMzMzMzM4MzMzMzMzMzUzMzMzMzMzOTMzMzMzMzM0MzMzNjMzMzQzMzMzMzMzMDMzMzMzMzM1MzMzMzMzMzMzMzMzMzMzODMzMzMzMzMwMzMzMzMzMzgzMzMzMzMzNzMzMzYzMzM2MzMzNjMzMzMzMzMzMzMzNTMzMzYzMzM1MzMzMzMzMzAzMzMzMzMzMDMzMzMzMzMyMzMzMzMzMzAzMzM3MzYzNDMzMzMzMzMxMzMzMzMzMzUzMzMzMzMzMzMzMzMzMzMxMzMzMzMzMzg=
按照代码相反顺序解密得到flag
编写的脚本请详细写出,不允许截图
flag值:
catf1ag{bbdecff870d48594d0538087fc5e0020}
总结:此次竞赛的题目还可以,虽然最后只在四十名左右,没有进入前十拿奖,但是却也收获满满,下次再接再厉!
这篇关于2022首届“天权信安catf1ag”网络安全联合公开赛复盘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!