CTFshow-Crypto(17-25)

news/2025/4/3 4:56:49/文章来源:https://www.cnblogs.com/Mchacha/p/18229879

17EZ_avbv(easy)

18贝斯多少呢

base62穷举分段image-20240602202558893

给了段编码,hint为base62

8nCDq36gzGn8hf4M2HJUsn4aYcYRBSJwj4aE0hbgpzHb4aHcH1zzC9C3IL

随波逐流和Cyberchef都没梭哈出来

看了师傅们的wp大概意思是:

分组长度固定,但是不一定是被整除为整数,只要找到从头开始截取一个长度解出明文,就是分组的长度了

其实就是穷举,分组长度应该是固定的,但是不一定没有冗余,穷举到可以解码出flag明文片段,后续继续按照该分组长度切割即可

最终分为

8nCDq36gzGn flag{6a5
8hf4M2HJUsn eb2_i5_u
4aYcYRBSJwj 5ua11y_u
4aE0hbgpzHb 5ed_f0r_
4aHcH1zzC9C 5h0rt_ur
3IL         1}
flag{6a5eb2_i5_u5ua11y_u5ed_f0r_5h0rt_ur1}
在线网站解码

image-20240602203849871

19find the table

题目说明审查元素

image-20240602204632156

检查-->元素或者对题目中的“审查元素”右键检查

image-20240602204602074

9 57 64 8 39 8 92 3 19 99 102 74

确实有有一些数字

对应元素周期表

元素周期表

image-20240602204822671

9 57 64 8 39 8 92 3 19 99 102 74
对应的元素就是
f la gd o y o u li k es no w

flag{doyoulikesnow}

审查元素有什么作用?

浏览器的审查元素,这是一个神奇的玩意儿_vue开发浏览器检查元素有什么作用-CSDN博客

20babyrsa

最基础的RSA

开始RSA

打开附件,给了e,p,q,c,是最基础的RSA

image-20240602205539794

RSA算法

密码公主写的很详细:

RSA入门(一) - Kicky_Mu - 博客园 (cnblogs.com)

脚本
from Crypto.Util.number import *
import gmpy2
e = 65537
p = 104046835712664064779194734974271185635538927889880611929931939711001301561682270177931622974642789920918902563361293345434055764293612446888383912807143394009019803471816448923969637980671221111117965227402429634935481868701166522350570364727873283332371986860194245739423508566783663380619142431820861051179
q = 140171048074107988605773731671018901813928130582422889797732071529733091703843710859282267763783461738242958098610949120354497987945911021170842457552182880133642711307227072133812253341129830416158450499258216967879857581565380890788395068130033931180395926482431150295880926480086317733457392573931410220501
c = 4772758911204771028049020670778336799568778930072841084057809867608022732611295305096052430641881550781141776498904005589873830973301898523644744951545345404578466176725030290421649344936952480254902939417215148205735730754808467351639943474816280980230447097444682489223054499524197909719857300597157406075069204315022703894466226179507627070835428226086509767746759353822302809385047763292891543697277097068406512924796409393289982738071019047393972959228919115821862868057003145401072581115989680686073663259771587445250687060240991265143919857962047718344017741878925867800431556311785625469001771370852474292194
n = p*q
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(m))
工具(风二西)

image-20240603085508275

21easyrsa1

image-20240603085553369

分解n

分解n=1455925529734358105461406532259911790807347616464991065301847

在线网站或者工具都可以

p=1201147059438530786835365194567

q=1212112637077862917192191913841

脚本
from Crypto.Util.number import *
import gmpy2
e = 65537
p = 1201147059438530786835365194567
q = 1212112637077862917192191913841
c = 69380371057914246192606760686152233225659503366319332065009
n = 1455925529734358105461406532259911790807347616464991065301847
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi) #求e关于phi_n1的逆元
m = pow(c,d,n) #m=(c1^d)modn1
print(long_to_bytes(m))
工具

跟上一题一样

22easyrsa2

共享素数/模不互素

e = 65537
n1 = 23686563925537577753047229040754282953352221724154495390687358877775380147605152455537988563490716943872517593212858326146811511103311865753018329109314623702207073882884251372553225986112006827111351501044972239272200616871716325265416115038890805114829315111950319183189591283821793237999044427887934536835813526748759612963103377803089900662509399569819785571492828112437312659229879806168758843603248823629821851053775458651933952183988482163950039248487270453888288427540305542824179951734412044985364866532124803746008139763081886781361488304666575456680411806505094963425401175510416864929601220556158569443747
c1 = 1627484142237897613944607828268981193911417408064824540711945192035649088104133038147400224070588410335190662682231189997580084680424209495303078061205122848904648319219646588720994019249279863462981015329483724747823991513714172478886306703290044871781158393304147301058706003793357846922086994952763485999282741595204008663847963539422096343391464527068599046946279309037212859931303335507455146001390326550668531665493245293839009832468668390820282664984066399051403227990068032226382222173478078505888238749583237980643698405005689247922901342204142833875409505180847943212126302482358445768662608278731750064815e = 65537
n2 = 22257605320525584078180889073523223973924192984353847137164605186956629675938929585386392327672065524338176402496414014083816446508860530887742583338880317478862512306633061601510404960095143941320847160562050524072860211772522478494742213643890027443992183362678970426046765630946644339093149139143388752794932806956589884503569175226850419271095336798456238899009883100793515744579945854481430194879360765346236418019384644095257242811629393164402498261066077339304875212250897918420427814000142751282805980632089867108525335488018940091698609890995252413007073725850396076272027183422297684667565712022199054289711
c2 = 2742600695441836559469553702831098375948641915409106976157840377978123912007398753623461112659796209918866985480471911393362797753624479537646802510420415039461832118018849030580675249817576926858363541683135777239322002741820145944286109172066259843766755795255913189902403644721138554935991439893850589677849639263080528599197595705927535430942463184891689410078059090474682694886420022230657661157993875931600932763824618773420077273617106297660195179922018875399174346863404710420166497017196424586116535915712965147141775026549870636328195690774259990189286665844641289108474834973710730426105047318959307995062

给了一个e,和多组的n,c。这些n,c还都是一个明文m

通过对不同的n进行gcd()算法,求出最大公约数(即p)

求出p了,就能求出q,进而求出d, 解出明文m

脚本
from Crypto.Util.number import *
import gmpy2
e = 65537
n1 = 23686563925537577753047229040754282953352221724154495390687358877775380147605152455537988563490716943872517593212858326146811511103311865753018329109314623702207073882884251372553225986112006827111351501044972239272200616871716325265416115038890805114829315111950319183189591283821793237999044427887934536835813526748759612963103377803089900662509399569819785571492828112437312659229879806168758843603248823629821851053775458651933952183988482163950039248487270453888288427540305542824179951734412044985364866532124803746008139763081886781361488304666575456680411806505094963425401175510416864929601220556158569443747
c1 = 1627484142237897613944607828268981193911417408064824540711945192035649088104133038147400224070588410335190662682231189997580084680424209495303078061205122848904648319219646588720994019249279863462981015329483724747823991513714172478886306703290044871781158393304147301058706003793357846922086994952763485999282741595204008663847963539422096343391464527068599046946279309037212859931303335507455146001390326550668531665493245293839009832468668390820282664984066399051403227990068032226382222173478078505888238749583237980643698405005689247922901342204142833875409505180847943212126302482358445768662608278731750064815
n2 = 22257605320525584078180889073523223973924192984353847137164605186956629675938929585386392327672065524338176402496414014083816446508860530887742583338880317478862512306633061601510404960095143941320847160562050524072860211772522478494742213643890027443992183362678970426046765630946644339093149139143388752794932806956589884503569175226850419271095336798456238899009883100793515744579945854481430194879360765346236418019384644095257242811629393164402498261066077339304875212250897918420427814000142751282805980632089867108525335488018940091698609890995252413007073725850396076272027183422297684667565712022199054289711
c2 = 2742600695441836559469553702831098375948641915409106976157840377978123912007398753623461112659796209918866985480471911393362797753624479537646802510420415039461832118018849030580675249817576926858363541683135777239322002741820145944286109172066259843766755795255913189902403644721138554935991439893850589677849639263080528599197595705927535430942463184891689410078059090474682694886420022230657661157993875931600932763824618773420077273617106297660195179922018875399174346863404710420166497017196424586116535915712965147141775026549870636328195690774259990189286665844641289108474834973710730426105047318959307995062
p = gmpy2.gcd(n1,n2)
q1 = n1//p #用n1 n2都可以,这里用n1,下面就用c1
phi_n1 = (p-1)*(q1-1)
d = gmpy2.invert(e,phi_n1) #求e关于phi_n1的逆元
m = pow(c1,d,n1) #m=(c1^d)modn1
print(long_to_bytes(m))
工具(风二西)

使用模不互素模式

image-20240603093011129

23easyrsa3

共模攻击

e = 797
n = 15944475431088053285580229796309956066521520107276817969079550919586650535459242543036143360865780730044733026945488511390818947440767542658956272380389388112372084760689777141392370253850735307578445988289714647332867935525010482197724228457592150184979819463711753058569520651205113690397003146105972408452854948512223702957303406577348717348753106868356995616116867724764276234391678899662774272419841876652126127684683752880568407605083606688884120054963974930757275913447908185712204577194274834368323239143008887554264746068337709465319106886618643849961551092377843184067217615903229068010117272834602469293571
c = 11157593264920825445770016357141996124368529899750745256684450189070288181107423044846165593218013465053839661401595417236657920874113839974471883493099846397002721270590059414981101686668721548330630468951353910564696445509556956955232059386625725883038103399028010566732074011325543650672982884236951904410141077728929261477083689095161596979213961494716637502980358298944316636829309169794324394742285175377601826473276006795072518510850734941703194417926566446980262512429590253643561098275852970461913026108090608491507300365391639081555316166526932233787566053827355349022396563769697278239577184503627244170930e = 521
n = 15944475431088053285580229796309956066521520107276817969079550919586650535459242543036143360865780730044733026945488511390818947440767542658956272380389388112372084760689777141392370253850735307578445988289714647332867935525010482197724228457592150184979819463711753058569520651205113690397003146105972408452854948512223702957303406577348717348753106868356995616116867724764276234391678899662774272419841876652126127684683752880568407605083606688884120054963974930757275913447908185712204577194274834368323239143008887554264746068337709465319106886618643849961551092377843184067217615903229068010117272834602469293571
c = 6699274351853330023117840396450375948797682409595670560999898826038378040157859939888021861338431350172193961054314487476965030228381372659733197551597730394275360811462401853988404006922710039053586471244376282019487691307865741621991977539073601368892834227191286663809236586729196876277005838495318639365575638989137572792843310915220039476722684554553337116930323671829220528562573169295901496437858327730504992799753724465760161805820723578087668737581704682158991028502143744445435775458296907671407184921683317371216729214056381292474141668027801600327187443375858394577015394108813273774641427184411887546849

n相同,但e,c不同 考察 共模攻击

上述两个密钥加密的密文c1,c2是由(n1,e1),(n2,e2)加密得到的,这个时候我们不需要计算d,可以直接解出密文m

根据RSA加密原理 我们可知:

c1 = m^e1 % n
c2 = m^e2 % n
若两个密钥e互素 根据扩展欧几里得算法,存在 s1、s2使得:

e1 * s1 + e2 * s2 = 1

因此,存在s1、s2 满足:

c1^s1 * c2^s2 mod n

≡ (me1)s1 * (me2)s2 mod n

≡ m^(e1+s1+e2+s2) mod n

≡ m mod n

因此便可不需要d 利用 c1 c2 e1 e2求解明文m 这就是共模攻击的原理

扩展欧几里得算法

扩展欧几里得算法详解-CSDN博客

扩展欧几里得模块gmpy2.gcdext(e1,e2)

扩展欧几里得:gmpy2.gcdext(e1,e2)#求式子e1x+e2y=gcd(e1,e2)。在RSA加密算法中利用该公式来求e的逆元d,由于实际上公钥e的选取需要保证gcd(e,ψ(n))=1,所以在这种情况下式子的右边就是1,且通常用下面这个公式来求逆元。

返回值为gcd(e1,e2),x, y

脚本
from Crypto.Util.number import *
import gmpy2
e1 = 797
c1 = 11157593264920825445770016357141996124368529899750745256684450189070288181107423044846165593218013465053839661401595417236657920874113839974471883493099846397002721270590059414981101686668721548330630468951353910564696445509556956955232059386625725883038103399028010566732074011325543650672982884236951904410141077728929261477083689095161596979213961494716637502980358298944316636829309169794324394742285175377601826473276006795072518510850734941703194417926566446980262512429590253643561098275852970461913026108090608491507300365391639081555316166526932233787566053827355349022396563769697278239577184503627244170930
e2 = 521
c2 = 6699274351853330023117840396450375948797682409595670560999898826038378040157859939888021861338431350172193961054314487476965030228381372659733197551597730394275360811462401853988404006922710039053586471244376282019487691307865741621991977539073601368892834227191286663809236586729196876277005838495318639365575638989137572792843310915220039476722684554553337116930323671829220528562573169295901496437858327730504992799753724465760161805820723578087668737581704682158991028502143744445435775458296907671407184921683317371216729214056381292474141668027801600327187443375858394577015394108813273774641427184411887546849
n = 15944475431088053285580229796309956066521520107276817969079550919586650535459242543036143360865780730044733026945488511390818947440767542658956272380389388112372084760689777141392370253850735307578445988289714647332867935525010482197724228457592150184979819463711753058569520651205113690397003146105972408452854948512223702957303406577348717348753106868356995616116867724764276234391678899662774272419841876652126127684683752880568407605083606688884120054963974930757275913447908185712204577194274834368323239143008887554264746068337709465319106886618643849961551092377843184067217615903229068010117272834602469293571
s= gmpy2.gcdext(e1,e2)
s1=s[1]
s2=s[2]
m = pow(c1,s1,n)*pow(c2,s2,n) %n
print(long_to_bytes(m))
工具(风二西)

选择共模攻击模式

image-20240603100021269

24easyrsa4

小明文攻击(低加密指数攻击)

e = 3
n = 18970053728616609366458286067731288749022264959158403758357985915393383117963693827568809925770679353765624810804904382278845526498981422346319417938434861558291366738542079165169736232558687821709937346503480756281489775859439254614472425017554051177725143068122185961552670646275229009531528678548251873421076691650827507829859299300272683223959267661288601619845954466365134077547699819734465321345758416957265682175864227273506250707311775797983409090702086309946790711995796789417222274776215167450093735639202974148778183667502150202265175471213833685988445568819612085268917780718945472573765365588163945754761
c = 150409620528139732054476072280993764527079006992643377862720337847060335153837950368208902491767027770946661

当e=3时,如果明文过小,导致明文的三次方仍然小于n,那么直接对密文三次开方,就可以得到明文

gmpy2.iroot(x,n)

对x开n次方根

脚本
from Crypto.Util.number import *
import gmpy2
e = 3
n = 18970053728616609366458286067731288749022264959158403758357985915393383117963693827568809925770679353765624810804904382278845526498981422346319417938434861558291366738542079165169736232558687821709937346503480756281489775859439254614472425017554051177725143068122185961552670646275229009531528678548251873421076691650827507829859299300272683223959267661288601619845954466365134077547699819734465321345758416957265682175864227273506250707311775797983409090702086309946790711995796789417222274776215167450093735639202974148778183667502150202265175471213833685988445568819612085268917780718945472573765365588163945754761
c = 150409620528139732054476072280993764527079006992643377862720337847060335153837950368208902491767027770946661
m = gmpy2.iroot (c,e)[0]
print(long_to_bytes(m))
工具(风二西)

image-20240603123912267

选小e攻击模式

25easyrsa5

维纳攻击(低解密指数攻击)

e = 284100478693161642327695712452505468891794410301906465434604643365855064101922252698327584524956955373553355814138784402605517536436009073372339264422522610010012877243630454889127160056358637599704871937659443985644871453345576728414422489075791739731547285138648307770775155312545928721094602949588237119345
n = 468459887279781789188886188573017406548524570309663876064881031936564733341508945283407498306248145591559137207097347130203582813352382018491852922849186827279111555223982032271701972642438224730082216672110316142528108239708171781850491578433309964093293907697072741538649347894863899103340030347858867705231
c = 350429162418561525458539070186062788413426454598897326594935655762503536409897624028778814302849485850451243934994919418665502401195173255808119461832488053305530748068788500746791135053620550583421369214031040191188956888321397450005528879987036183922578645840167009612661903399312419253694928377398939392827

有关wiener 攻击的解题脚本

pablocelayes/rsa-wiener-attack: A Python implementation of the Wiener attack on RSA public-key encryption scheme. (github.com)

利用python编写一下代码

from Crypto.Util.number import *
from gmpy2 import *
from RSAwienerHacker import *n= 468459887279781789188886188573017406548524570309663876064881031936564733341508945283407498306248145591559137207097347130203582813352382018491852922849186827279111555223982032271701972642438224730082216672110316142528108239708171781850491578433309964093293907697072741538649347894863899103340030347858867705231
e= 284100478693161642327695712452505468891794410301906465434604643365855064101922252698327584524956955373553355814138784402605517536436009073372339264422522610010012877243630454889127160056358637599704871937659443985644871453345576728414422489075791739731547285138648307770775155312545928721094602949588237119345
c= 350429162418561525458539070186062788413426454598897326594935655762503536409897624028778814302849485850451243934994919418665502401195173255808119461832488053305530748068788500746791135053620550583421369214031040191188956888321397450005528879987036183922578645840167009612661903399312419253694928377398939392827d=hack_RSA(e,n)
m=pow(c,d,n)
print(long_to_bytes(m))

将代码放到下载脚本的目录(我命名为RSA.py),cmd运行得到flag

image-20240603150323052

工具(风二西)

选择维纳攻击模块

image-20240603152454783

原理

有点似懂非懂的就先不说了,给两篇我觉得写的比较好的先留着,说不定哪天灵光一现就通透了

Wener‘s attack(RSA低解密指数攻击)-CSDN博客

RSA攻击基本原理及代码实现总结 - 个人文章 - SegmentFault 思否

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/719486.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平安-瀚景家族

三个月要求概要内容学习情况备注 三讲入司前:学习陈相妤(陈红梅)《讲“三讲”,赢得高端客户认同》 入司起第3个月:对所有人都适用的三讲,1分钟以上、3分钟以内,录视频发给推荐人 …

State设计模式上篇(理论篇)

State设计模式理论篇参考了王备战老师的ppt,相当于是一次期末复习总结吧 ⭐目标:目前的需求是我所制作的OJ项目在面临代码提交结果以及运行结果时对于其中的各个状态(如:通过!编译失败等等诸多状态进行代码开发时,很容易代码一不小心就写烂了,写到连自己都无法看懂的地步,所以尝…

vscode如何添加本地python解释器、解析器 Interpreter?(Python: Select Interpreter),并在vscode运行python代码

先安装python扩展 然后点ctrl+shift+p搜索python:select,选择解析器(或者也可以直接点左下方的) 然后360报毒了,允许通过,然后选择你想要的解释器 然后就好了 20230816 文章目录在VSCode中添加本地Python解释器 Python解释器简介为什么要在VSCode中设置Python解释器如…

红日靶场2

环境搭建 配置ip,web机有两张网卡,我对nat设置为192.168.11.0网段,仅主机为192.168.52.0网段,这三台机子都要改一下ip,官方给出要恢复快照3,恢复的时候有问题,不用恢复没有影响 web机的网络情况如下就可以了在这个目录下启动weblogic服务,以管理员身份运行startWebLogic…

C133 线段树分治 CF1681F Unique Occurrences

视频链接:C133 线段树分治 CF1681F Unique Occurrences_哔哩哔哩_bilibili Unique Occurrences - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Problem - 1681F- Codeforces// 线段树分治 O(nlognlogn) #include <iostream> #include <cstring> #include <al…

P10536 [Opoi 2024] 二十六点 题解

比较直接的做法。 当 \(P_x = 1\) 时显然可以暴力 DP,设 \(f_{x,c}\) 表示 \(x\) 的子树中以 \(c\) 开头的最长不下降子序列的长度。直接转移即可。 \(P_x \neq 1\) 的时候呢?我们发现,所谓“忽略掉这些路径中的第 \(2\) 到第 \(P_x\) 个的点”,代表的就是按照深度转移,大…

数据对标?我搜集了7000+标准数据元分享给你

数据治理工作推进过程中比较关键的一步就是数据标准化,这里的数据标准化是指根据相关规范将数据达成统一技术要求的过程。 我国的主要标准分类包括国家标准、行业标准、地方标准和团体标准、企业标准。我们用的比较多的一般就是国标、行标和企业标准。 一、国家标准 国家标准,…

nrf24L01 check不通过问题分析

下面这段代码是有问题的,使nrf24L01 check不通过。 #include "stm32f10x.h" // Device header#include "spi.h" #include "OLED.h"/****** SPI2引脚连接 ******/ #define PA4_SPI1_NSS GPIO_Pin_4 #define PA5_SPI1_SCK GPIO_Pin_5 #define PA6…

Tiger Lowcode 低代码开发平台、Web前端设计器、LowcodeCore 快速构建API

最近发现一款非常好用的低代码开发平台:Tiger 低代码开发平台:http://www.tigerlowcode.com “Tiger 低代码平台”分为:“Web设计器”和“API设计器”两个部分。“Web设计器”是一个基于“CSS/Jquery/HTML”,用于实现“拖拉拽,所见即所得”的前端框架。“API设计器”是一个…

6.3数组-- 二分查找

704. 二分查找 力扣题目链接 题意描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。这道题目的前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素…

jarbas

jarbas主机发现和nmap扫描 nmap -sn 192.168.56.0/24靶机ip:192.168.56.104 nmap -sT --min-rate 10000 192.168.56.104PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 3306/tcp open mysql 8080/tcp open http-proxynmap -sT -sV -sC -O -p22,80,3306,808…