一、写在前面
在上学期期末就想筹办这次面向学院新生的比赛了,寒假里跟社团的同学们出了题,基本也是面向0基础,以引导和兴趣为主,绝大部分题目都能通过现场学习或者利用搜索引擎就能解决,实际参赛人数大约三十人,也算符合预期,本次比赛使用的平台是GZCTF,github地址为:https://github.com/GZTimeWalker/GZCTF?tab=readme-ov-file
二、取证部分
取证部分直接使用了beginCTF的取证原题,主要是为了让参赛人员熟悉取证工具的常见使用以及命令,以下为题目解答。
题目一:cmd里的密码
题目描述:你知道cmd里藏着什么信息吗?
附件是一个raw镜像文件,用volatility分析下,题目提示查看cmd,这里使用cmdscan看一下,得到flag
1
| vol.py -f hello.raw --profile=Win7SP1x64 cmdscan
|
得到第一题flag:flag{Cmd_1in3_109_i5_imp0rt@nt}
题目二:浏览器里的机密
题目描述:你知道小谢的IE浏览器里藏着什么秘密吗?
用iehistory查看一下ie浏览其里的记录,寻找包含flag字符的信息
1
| vol.py -f hello.raw --profile=Win7SP1x64 iehistory |grep "flag"
|
得到flag,解一下url码即可
得到第二题的flag:flag{Y0v_c@n_g3t_th3_i3hi5t0ry}
题目三:计算机的密码
题目描述:你知道这台计算机的密码是什么吗?
这里使用volatility的一个插件mimikatz,可以查看明文密码
1
| vol.py -f hello.raw --profile=Win7SP1x64 mimikatz
|
题目四:机密文件要妥善保存
题目描述:你知道机密文件里是什么吗?
首先用filescan文件搜索下包含“机密”二字的文件,发现机密文件.docx
1
| vol.py -f hello.raw --profile=Win7SP1x64 filescan |grep "机密"
|
将该文件提取出来
1
| vol.py -f hello.raw --profile=Win7SP1x64 dumpfiles -Q "0x000000001e742dd0" -D ./
|
将提取出来的文件的后缀名改为docx
打开后是flag
第四个题目的flag为:flag{Y0v_c@n_d0vvn_th3_fi13}
三、密码部分
密码一共三道,一道摩斯密码作为签到题,一道RSA基本原理,一道共模攻击。
题目一:一串信息
题目描述:小吴同学收到了小严同学的一段信息–.- ..-. -. ..- -.-. - ..-. —-.– – — … . -.-. — -.. . .- -. -.. –.- ..-. -. ..- —–.- ,他似乎不明白这段信息是什么意思,你知道吗?该题答案为:QFNUCTF{XXXXX}格式
题目解答:摩斯密码,直接翻译即可
得到flag:QFNUCTF{MOSECODEANDQFNU}
题目二:RSA基本原理
题目描述:小明正在学习RSA的基本知识,他得到了n=143,公钥e=17,私钥d=113,密文为7,请你帮助小明获得原始明文,并将结果填写在qfnuctf{}的花括号里提交。
该题主要是RSA考察对于RSA基本原理的理解与运用,以下为基本原理
以下为具体解题
qfnuctf{24}
题目三:两个模数居然一样
题目给出了一个加密脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| from gmpy2 import * from Crypto.Util.number import * flag = 'qfnuctf{hello,qfnu}' p = getPrime(2048) q = getPrime(2048) m1 = bytes_to_long(bytes(flag.encode())) e1 = 3247473589 e2 = 3698409173 n = p*q flag1 = pow(m1,e1,n) flag2 = pow(m1,e2,n) print('flag1= '+str(flag1)) print('flag2= '+str(flag2)) print('n= '+str(n))
''' flag1= 375531898324321471720276787550693405944926126074533547871726457883520732075620336069698857856349767664110389234477936422812925551469947327230796475752752365747197075480396612109822690188816688534399231865889556921451532725271583005108409229113944302315960931452929768251965640072110136102810998803100270218289251314659764774405406406988875146910237333363258769870380386888063205712300117496808733178958665710960491352026882287626847563989698956075137611669927719077503029982078413515205145304087031281605244105848220755240710878523808281328701403465271357430927213451816086891502144199080263492955880118962309993091551784475480740704257954846758374594335116928093215990058427922931698414662789611585418374419001168192496352546942821679686569748514504858975280245937201976509599956219190070640722931910159891202376082602443078846876984561899775922609349952247267796907855404089551129077389329814043879192978645573649434983407084557725507168477407375979769075982703647744127720830270317403150148131275275281286997098656934538006529189371500425435164054480555059096362975409721702119543817142051199845303827671388034067147423958885812893295007047923059156622871206229236615649171793656406796341049374868687711781234013416309675891307393 flag2= 347591103961120163519107479578764214646041926413580555921159034808799870859889507753720728589433273505124714076032185220813048552551271584771491650929245328237008883292756541687815702971199316989760860749066080758758827018661577218547597408893337410798777668369804774304516176578153390589249487773512116827667657113488826983019377203340309252099510872045559551137373937325447429868374589521025053510239282106081163136832224246458779559759558373217250858660047257353245823261531401744549892306453820531695020998680690958073028841354348536865781772305543438754053015770323099185706446441666603747389239938097575151185364684441585874525071636770258542349489265858772362316496440677775731726379341649443606870446049613431463842139155717712075683837006161101837841578652633446715854122799145591772417956444791396928022576214067381677702738954768960851229529533511975247574089188689995389417019807413139692910072698555700059983250689413419637131090024392474447894106812168336764880767084946057906002241591741598461457549990128368226663606985971290455997273202401924270593570485441285973258452624585311481046537643750900668689225577788158229821349917707601260273910477451314295521607572807141522450541704779844827335255929420213962845246185 n= 473275489029574638227360931977793769470308219432883099013327733301445152285261672921313657317871422673496221314887066162284446626669720855498318879954358242513041418445599774640710149374769262729259493139698543069750213915625095291356772867827036300615016019069982040583630694317495477861977319590186381830468720658186347785230915864966308588258214486551896739303207203631040253414216850163902961534646144295821301945582759471754456372150563656012996951440986751347448436869638095328249525060956231983813147936851326017622197290141130813278191126734383433932751060759382005551034191430225589686890940877994057755039654383769066562050178553766128537516863289554375480984166091878421759112028273277205531813239101314779956020296798495612918172012397942175311032523132636063018157282111976981428941747584546118026130690082000531879570679739004530802936449323414423719764039191211136945878711917758594883618778475227076142998123391660063308633443844638436088446216518624403872463563266395926494540743405224869421500514559568453345227620643169712527100425481129519020528530466477990923100938142585116275469712624846477228365578980471685615099143974039791920276696717966458176113232016618706653056230008032584637485489718087281212118215867 '''
|
两个加密使用的模数一样,考虑共模攻击,原理解析可参考:https://ctf-wiki.org/crypto/asymmetric/rsa/rsa_module_attack/
解密脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import libnum import gmpy2
n=473275489029574638227360931977793769470308219432883099013327733301445152285261672921313657317871422673496221314887066162284446626669720855498318879954358242513041418445599774640710149374769262729259493139698543069750213915625095291356772867827036300615016019069982040583630694317495477861977319590186381830468720658186347785230915864966308588258214486551896739303207203631040253414216850163902961534646144295821301945582759471754456372150563656012996951440986751347448436869638095328249525060956231983813147936851326017622197290141130813278191126734383433932751060759382005551034191430225589686890940877994057755039654383769066562050178553766128537516863289554375480984166091878421759112028273277205531813239101314779956020296798495612918172012397942175311032523132636063018157282111976981428941747584546118026130690082000531879570679739004530802936449323414423719764039191211136945878711917758594883618778475227076142998123391660063308633443844638436088446216518624403872463563266395926494540743405224869421500514559568453345227620643169712527100425481129519020528530466477990923100938142585116275469712624846477228365578980471685615099143974039791920276696717966458176113232016618706653056230008032584637485489718087281212118215867 e1 = 3247473589 e2 = 3698409173 c1=375531898324321471720276787550693405944926126074533547871726457883520732075620336069698857856349767664110389234477936422812925551469947327230796475752752365747197075480396612109822690188816688534399231865889556921451532725271583005108409229113944302315960931452929768251965640072110136102810998803100270218289251314659764774405406406988875146910237333363258769870380386888063205712300117496808733178958665710960491352026882287626847563989698956075137611669927719077503029982078413515205145304087031281605244105848220755240710878523808281328701403465271357430927213451816086891502144199080263492955880118962309993091551784475480740704257954846758374594335116928093215990058427922931698414662789611585418374419001168192496352546942821679686569748514504858975280245937201976509599956219190070640722931910159891202376082602443078846876984561899775922609349952247267796907855404089551129077389329814043879192978645573649434983407084557725507168477407375979769075982703647744127720830270317403150148131275275281286997098656934538006529189371500425435164054480555059096362975409721702119543817142051199845303827671388034067147423958885812893295007047923059156622871206229236615649171793656406796341049374868687711781234013416309675891307393 c2=347591103961120163519107479578764214646041926413580555921159034808799870859889507753720728589433273505124714076032185220813048552551271584771491650929245328237008883292756541687815702971199316989760860749066080758758827018661577218547597408893337410798777668369804774304516176578153390589249487773512116827667657113488826983019377203340309252099510872045559551137373937325447429868374589521025053510239282106081163136832224246458779559759558373217250858660047257353245823261531401744549892306453820531695020998680690958073028841354348536865781772305543438754053015770323099185706446441666603747389239938097575151185364684441585874525071636770258542349489265858772362316496440677775731726379341649443606870446049613431463842139155717712075683837006161101837841578652633446715854122799145591772417956444791396928022576214067381677702738954768960851229529533511975247574089188689995389417019807413139692910072698555700059983250689413419637131090024392474447894106812168336764880767084946057906002241591741598461457549990128368226663606985971290455997273202401924270593570485441285973258452624585311481046537643750900668689225577788158229821349917707601260273910477451314295521607572807141522450541704779844827335255929420213962845246185
def exp_def(e1,e2,c1,c2,n): s,s1,s2 = gmpy2.gcdext(e1, e2) m = (pow(c1,s1,n) * pow(c2 ,s2 ,n)) % n return int(m)
m=exp_def(e1,e2,c1,c2,n)
print(libnum.n2s(m))
|
运行后得到flag:qfnuctf{th1s_1s_baby_nn}