第五届强网杯青少年专项赛——线上选拔赛部分writeup

2021-10-21 6,972

楼上大佬ddw战队WRITEUP

一、 战队信息

战队名称:楼上大佬ddw

战队排名:24

二、 解题情况

三、 解题过程

01 签到

操作内容:

下载附件,打开运行拿到flag


如该题使用自己编写的脚本代码请详细写出,不允许截图

flag值:flag{鲸鱼带你进入鲸奇世界}

02 Lihua's for

操作内容:

RE 扔进IDA



下断点,动态调试,然后取a数组的数据


写解密代码


如该题使用自己编写的脚本代码请详细写出,不允许截图

less=[0x66,0x6D,0x63,0x64,0x7f,0x64,0x32,0x36,0x6a,0x6c,0x3e,0x3d,0x39,0x20,0x6f,0x3a,0x20,0x77,0x3f,0x27,0x25,0x27,0x22,0x3a,0x7a,0x2e,0x78,0x7a,0x31,0x2f,0x29,0x29,0x16,0x40,0x44,0x45,0x12,0x47,0x47,0x41,0x1a,0x54]

print(len(less))

sas=""

for i in range(len(less)):

 sas+=chr(l[i]^i)

print(sas)

flag值:flag{a41be465-a50f-4124-b7ba-2766aff6baf2}

02 Crypto2

操作内容:

两组数中e相同,n,c不同,求出n1与n2的最大公因数即为p,之后就可以得到q和d,从而求解m,该题中的flag为两部分,要依次求出再拼接。

如该题使用自己编写的脚本代码请详细写出,不允许截图

import gmpy2

import binascii

e = 65537

n1 = 20663949646446787716947370247427064802032290773674573417491154934657966734874241036307633567695175131014840617208051931753476223149652427133485160771068994073566431652969243962290116898345337189704974833817335135391974497754670322430159624252007005736522065638860351992074099453212550475552692645688800084354832716662142860413158369020005830095049988807931794736876563293916525328174812726514626029103506607813186690909585870115364600969148482617083817273910020722354923244093624032174432568413187131385994452769295894606345768596899824635672699945050103814681553981019917552667794514804359500108947102234376726009329

c1 = 20522772249591436865905796103232542494211695376973377722875606678999899690405480809231671346489821878050354380591999935960795888483664473952207298504196203830543208477229162177648586683957831016664569242538775928728009699300145355818417233892295367828930893733774091897666206696635744262884229680137381841581000794056156842812583057103472764486608022028638288161256424936523444974815727764620634174112474612238992061186937613171878635903455700636894570504376153482600057655480654731180740098435209814585459376319844315388048636156465832997913885636776523217188604040216732137108997444787157007665652718553013424347649

n2 = 23260834024376640092536888922041147168387702014814910549469730354688848760379274203088716649609675449936234732528778557041701524981200368996310064584479657042098426164366286670115392015865853892816983885530312074073396422301009513106258655315791720535737587913264728919869055970993613641008348186263870234072422880033882864603438907070864271470483691729705421547143623305055532339107777314310976947392833395180922324243244784018964736826235018388498516438612962123562977736924674510730898077787055367234786519915374446506561992135856904927351307275140543635152771670410211235702283822782412971646092584646758107766061

c2 = 18715009944766815149492560645051626329204114049927707292306481018724323433701970253541495090244787378826569549885480491764057526828531429033378143426272248940256432423939977805246742287886281853484696625486522535042794403288199393432900065504766428665320682811338887618389589263597065738414638013423594446322359052784842619755053094028050245325637698678444632860097510081832077842610716042473697478416213915805481704537884611126069907812621750817901278803326304784057145916721693930579344441283586458621033705530309835431139751025999089707480829034535026967779441379062426254038310930863215188888662357133997908688736

p = gmpy2.gcd(n1,n2)

q1 = n1// p

q2 = n2//p

phi1= (p-1)*(q1-1)

phi2= (p-1)*(q2-1)

d1= gmpy2.invert(e,phi1)

d2= gmpy2.invert(e,phi2)

m1= gmpy2.powmod(c1,d1,n1)

m2= gmpy2.powmod(c2,d2,n2)

print(binascii.unhexlify(hex(m1)[2:]))

print(binascii.unhexlify(hex(m2)[2:]))

flag值:flag{afb1e6f2-9acb-efde-ad7c-246a99d8f1fd}

04 Crypto1

操作内容:

e1=49

e2=35

首先想到了共模攻击,但是不满足gcd条件(e1,e2互质)想到可以将49,35同时除以7,然后进行低加密指数攻击即可

如该题使用自己编写的脚本代码请详细写出,不允许截图

import gmpy2

from Crypto.Util.number import long_to_bytes

n=96722669749951212913756678234358651184134068407812470434435916603156818917545841439779031943800634250032106764154804309935557678512858630048212204696471487762160744924838010746445510979202735123140536599975731157563069594497905809587369126155476201977830809090473053692189364335223367147692962090288185113654598050169422517553085833257142179937154768657039042632343562454149914801329414293361879935460883633117988279426277638667508115319494914342600199690237441851088350726869553691992122821267990343643644523989413546160765907845604067031798179773495433134648132709349683621175243064236059479837244518879574919017301667066698329442453248971033564328161407342561250703168154214939772631586519304164853651

c1=66738113223447221430009739914948303261002811553064307532926788024694319846909340806982708347904688420671656410554852340732395818007063648478593071665936277836988050526188064146099581039172667768507259894363266310279948729552649788129953872816024709989260060633285022337107662251504618369065597018450927041881262189584381809106166042131798086882746986243210896131714227544235843922107304728228549916171484199199612243776469423359120753888158616202476325705252715374109256790899923317253605743212561589807498078080069511918514647943399566630574192829185904868376879831247378819590121286186417825591746918495311372015707767009078229770450338244309693800180936418605756818618708750868807720566288044943952844

c2=88330949146651042517337653740810385187361689012501792799900873279978736035790659211001047937337215121948527017022967642906632732136313750277237761910710915459733551421653259986088596828049455592613225962133163865584111828012197112528645520371075411167515961263199635568730334149461654340122507778194391601956023625429418297129608911450200836427221311442323768087256798964844787274408624548839536279704401007441198390922847003287643673183230633728790263593607595427088882078742699027563601046309308221108391158848644822374865676056755011459026909057983805069264236657111115914570543103494726584296335044897998794251877515750910330960179539465060133592380802344398038815679281272098815068185059127533110716

e1=7

e2=5

def ext_euclid(a,b):

 if b == 0:

 return 1,0,a

 else:

 x,y,q = ext_euclid(b, a % b) #gcd(a,b)=gcd(b,a%b)

 x,y = y, (x-(a//b)*y)

 return x,y,q

def same_mod(n,e1,e2,c1,c2):

 s,t,q = ext_euclid(e1,e2)

 m=(gmpy2.powmod(c1,s,n)*gmpy2.powmod(c2,t,n)) % n # 大数运算

 flag = m

 # 爆破

 i = 0

 while 1:

 if gmpy2.iroot(m + i * n,7)[1]==True:

 print(long_to_bytes(gmpy2.iroot(m+i*n,7)[0]))

 break

 i += 1

 return flag

if __name__ == '__main__':

 same_mod(n,e1,e2,c1,c2)

flag值:

flag{8ac9f9e3-82ba-ff7e-ac7b-235a02d891ef}

06 拼图

操作内容:

拿到附件先解压,原图先不用看,直接看分割后的。

因为分割图片,所以我们可以通过时间排列 (分割文件的保存的时间排序。)

可以看到分割的顺序是从左到右依次分割。整理含字符串的图片。



整理出来有如下片段:


能拼成这样子,提交该flag:   flag{Hamsters_are_so_cute} 都提示不对。


发现了这个东西,可能是个感叹号什么的?还是i呢?我想了一下,按照英语语法,i有点不合适。

可能是感叹号,那就交了试试flag{Hamsters_are_so_cute!} 发现不对

但是我发现文件中还有很多没有拼接,比如


试试多加几个!吧,提交发现3个!就对了得到flag 

flag值:flag{Hamsters_are_so_cute!!!}


本文作者:Sweet°丶末心

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/168018.html

Tags:
评论  (0)
快来写下你的想法吧!

Sweet°丶末心

文章数:2 积分: 60

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号