NSSCTF Crypto靶场练习,21-30wp

文章目录

  • [AFCTF 2018]你能看出这是什么加密么
  • [LitCTF 2023]你是我的关键词(Keyworld)
  • [NSSCTF 2022 Spring Recruit]classic
  • [SWPUCTF 2021 新生赛]crypto4
  • [LitCTF 2023]家人们!谁懂啊,RSA签到都不会 (初级)
  • [SWPUCTF 2021 新生赛]crypto5
  • [LitCTF 2023]Is this only base?
  • [AFCTF 2018]Vigenère
  • [BJDCTF 2020]rsa
  • [SWPUCTF 2021 新生赛]crypto1

[AFCTF 2018]你能看出这是什么加密么

附件打开,RSA加密,根据rsa公式计算。

EXP:

from Crypto.Util.number import long_to_bytes
from gmpy2 import invertp = 0x928fb6aa9d813b6c3270131818a7c54edb18e3806942b88670106c1821e0326364194a8c49392849432b37632f0abe3f3c52e909b939c91c50e41a7b8cd00c67d6743b4f
q = 0xec301417ccdffa679a8dcc4027dd0d75baf9d441625ed8930472165717f4732884c33f25d4ee6a6c9ae6c44aedad039b0b72cf42cab7f80d32b74061
e = 0x10001
c = 0x70c9133e1647e95c3cb99bd998a9028b5bf492929725a9e8e6d2e277fa0f37205580b196e5f121a2e83bc80a8204c99f5036a07c8cf6f96c420369b4161d2654a7eccbdaf583204b645e137b3bd15c5ce865298416fd5831cba0d947113ed5be5426b708b89451934d11f9aed9085b48b729449e461ff0863552149b965e22b6n = p * qphi = (p - 1) * (q - 1)
d = invert(e, phi)
print(long_to_bytes(pow(c, d, n)))

[LitCTF 2023]你是我的关键词(Keyworld)

根据题目描述

题目描述: YOU are my keworld

所以YOU是关键字。找个在线网站解密。

image-20231210175859866


[NSSCTF 2022 Spring Recruit]classic

image-20231210180857875

先用凯撒密码爆破看看

def caesar_cipher_decrypt(ciphertext, shift):result = ""for char in ciphertext:if char.isalpha():if char.islower():result += chr((ord(char) - shift - ord('a')) % 26 + ord('a'))else:result += chr((ord(char) - shift - ord('A')) % 26 + ord('A'))else:result += charreturn resultdef caesar_brute_force_attack(ciphertext):for shift in range(1, 26):decrypted_text = caesar_cipher_decrypt(ciphertext, shift)print(f"Shift {shift}: {decrypted_text}")if __name__ == "__main__":encrypted_text = "UZZJAM{UIXETGR7TMWD42SKTCWEP4AG_mhrlmshnayfihzl}"caesar_brute_force_attack(encrypted_text)#Shift 7: NSSCTF{NBQXMZK7MFPW42LDMVPXI4TZ_fakeflagtrybase}

最后结果为fakeflagtrybase,提示我们常使用base编码

image-20231210180948770

试了一下,发现是base32,得到flag NSSCTF{have_a_nice_tey}


[SWPUCTF 2021 新生赛]crypto4

image-20231210181842593

一道RSA题目,考察素数分解。

用在线网站解一下,发现可以解。得到p和q

image-20231210181834103

EXP:

from gmpy2 import *
from Crypto.Util.number import *e = 0x10001
p= 7221289171488727827673517139597844534869368289455419695964957239047692699919030405800116133805855968123601433247022090070114331842771417566928809956044421
q = 7221289171488727827673517139597844534869368289455419695964957239047692699919030405800116133805855968123601433247022090070114331842771417566928809956045093
c= 10227915341268619536932290456122384969242151167487654201363877568935534996454863939953106193665663567559506242151019201314446286458150141991211233219320700112533775367958964780047682920839507351492644735811096995884754664899221842470772096509258104067131614630939533042322095150722344048082688772981180270243
n= 52147017298260357180329101776864095134806848020663558064141648200366079331962132411967917697877875277103045755972006084078559453777291403087575061382674872573336431876500128247133861957730154418461680506403680189755399752882558438393107151815794295272358955300914752523377417192504702798450787430403387076153
phi = (p-1)*(q-1)
d = invert(e,phi)
print(long_to_bytes(pow(c,d,n)))
# NSSCTF{no_why}

[LitCTF 2023]家人们!谁懂啊,RSA签到都不会 (初级)

简单rsa

image-20231210182214553

套公式。

from gmpy2 import *
from Crypto.Util.number import *p = 12567387145159119014524309071236701639759988903138784984758783651292440613056150667165602473478042486784826835732833001151645545259394365039352263846276073
q = 12716692565364681652614824033831497167911028027478195947187437474380470205859949692107216740030921664273595734808349540612759651241456765149114895216695451
c = 108691165922055382844520116328228845767222921196922506468663428855093343772017986225285637996980678749662049989519029385165514816621011058462841314243727826941569954125384522233795629521155389745713798246071907492365062512521474965012924607857440577856404307124237116387085337087671914959900909379028727767057
e = 65537
n = p*q
phi = (p-1)*(q-1)
d = invert(e,phi)
print(long_to_bytes(pow(c,d,n)))
# LitCTF{it_is_easy_to_solve_question_when_you_know_p_and_q}

[SWPUCTF 2021 新生赛]crypto5

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

题目也只给了 flag 和 n,flag应该是加密过后的c;所以先判断出这是RSA加密,接着判断是小明文攻击(低加密指数攻击);小明文攻击的情况就三种,e = 3,e = 2,e = 1;从3开始考虑。运用上面的关键代码:

EXP:

from gmpy2 import *  # python第三方库
from Crypto.Util.number import *c = 25166751653530941364839663846806543387720865339263370907985655775152187319464715737116599171477207047430065345882626259880756839094179627032623895330242655333
n = 134109481482703713214838023035418052567000870587160796935708584694132507394211363652420160931185332280406437290210512090663977634730864032370977407179731940068634536079284528020739988665713200815021342700369922518406968356455736393738946128013973643235228327971170711979683931964854563904980669850660628561419i = 0
while 1:if iroot(c + i * n, 3)[1] == 1:print(long_to_bytes(iroot(c + i * n, 3)[0]))breaki = i + 1# b'NSSCTF{because_i_like}'

得到flag。这里打印了一下 i = 0;实际上是俩种情况中的第一种 m**e < n ,就有c = m**e 相等于直接对c开3次方就可以了。


[LitCTF 2023]Is this only base?

image-20231210220013750

23是 个hint。题目的意思是 这只是base?意思就是除了base还有其他加密或编码。观察文本里有俩个等号,如果是base的话,这俩个等号应该在结尾才对。所以使用栅栏密码解密一下。用hint 23 。之后再base64

image-20231210220157400

出来一个flag的,但是格式不对。再用凯撒密码,试试。爆破一下

def caesar_cipher_decrypt(ciphertext, shift):result = ""for char in ciphertext:if char.isalpha():if char.islower():result += chr((ord(char) - shift - ord('a')) % 26 + ord('a'))else:result += chr((ord(char) - shift - ord('A')) % 26 + ord('A'))else:result += charreturn resultdef caesar_brute_force_attack(ciphertext):for shift in range(1, 26):decrypted_text = caesar_cipher_decrypt(ciphertext, shift)print(f"Shift {shift}: {decrypted_text}")if __name__ == "__main__":encrypted_text = "IfqZQC{IbQ_Rp_E4S3_cR0!!!!!}"caesar_brute_force_attack(encrypted_text)

得到 LitCTF{LeT_Us_H4V3_fU0!!!}


[AFCTF 2018]Vigenère

题目已经给提示了,维吉尼亚密码。

用在线网站解密https://www.guballa.de/vigenere-solver

image-20231211220559503


[BJDCTF 2020]rsa

image-20231211224352244

有一个 assert(e<100000) 的条件可以利用。

俩个模数n,以及同一个q,可以先用共享素数攻击,可以得到p和q1。

又因为我们知道了一组明文和密文(294)所以可以利用这里 爆破出 e 来。根据 294 ** e % n1 == c1

之后就可以用解出flag了。

from Crypto.Util.number import long_to_bytes
from gmpy2 import gcd, invertflag = 12641635617803746150332232646354596292707861480200207537199141183624438303757120570096741248020236666965755798009656547738616399025300123043766255518596149348930444599820675230046423373053051631932557230849083426859490183732303751744004874183062594856870318614289991675980063548316499486908923209627563871554875612702079100567018698992935818206109087568166097392314105717555482926141030505639571708876213167112187962584484065321545727594135175369233925922507794999607323536976824183162923385005669930403448853465141405846835919842908469787547341752365471892495204307644586161393228776042015534147913888338316244169120
n1 = 13508774104460209743306714034546704137247627344981133461801953479736017021401725818808462898375994767375627749494839671944543822403059978073813122441407612530658168942987820256786583006947001711749230193542370570950705530167921702835627122401475251039000775017381633900222474727396823708695063136246115652622259769634591309421761269548260984426148824641285010730983215377509255011298737827621611158032976420011662547854515610597955628898073569684158225678333474543920326532893446849808112837476684390030976472053905069855522297850688026960701186543428139843783907624317274796926248829543413464754127208843070331063037
n2 = 12806210903061368369054309575159360374022344774547459345216907128193957592938071815865954073287532545947370671838372144806539753829484356064919357285623305209600680570975224639214396805124350862772159272362778768036844634760917612708721787320159318432456050806227784435091161119982613987303255995543165395426658059462110056431392517548717447898084915167661172362984251201688639469652283452307712821398857016487590794996544468826705600332208535201443322267298747117528882985955375246424812616478327182399461709978893464093245135530135430007842223389360212803439850867615121148050034887767584693608776323252233254261047
q = gcd(n1, n2)
print(q)
p1 = n1 // q
print(p1)
phi = (q - 1) * (p1 - 1)
c1 = 381631268825806469518166370387352035475775677163615730759454343913563615970881967332407709901235637718936184198930226303761876517101208677107311006065728014220477966000620964056616058676999878976943319063836649085085377577273214792371548775204594097887078898598463892440141577974544939268247818937936607013100808169758675042264568547764031628431414727922168580998494695800403043312406643527637667466318473669542326169218665366423043579003388486634167642663495896607282155808331902351188500197960905672207046579647052764579411814305689137519860880916467272056778641442758940135016400808740387144508156358067955215018
e = 1
for i in range(100000):if 294 ** i % n1 == c1:e = ibreak
print(e)
d = invert(e, phi)
print(long_to_bytes(pow(flag,d,n1)))

爆破需要一点时间。

image-20231211224736802

这一题还有hint,e = 52361 。。。。。。。


[SWPUCTF 2021 新生赛]crypto1

image-20231211224907612

也是RSA,有了e1*e2的值。也是可以用爆破,依次爆e1和e2的值。爆出来后就用共模攻击,可以得到俩个贝祖系数。

EXP:

from Crypto.Util.number import long_to_bytes
from gmpy2 import iroot, gcdextc1 = 463634070971821449698012827631572665302589213868521491855038966879005784397309389922926838028598122795187584361359142761652619958273094398420314927073008031088375892957173280915904309949716842152249806486027920136603248454946737961650252641668562626310035983343018705370077783879047584582817271215517599531278507300104564011142229942160380563527291388260832749808727470291331902902518196932928128107067117198707209620169906575791373793854773799564060536121390593687449884988936522369331738199522700261116496965863870682295858957952661531894477603953742494526632841396338388879198270913523572980574440793543571757278020533565628285714358815083303489096524318164071888139412436112963845619981511061231001617406815056986634680975142352197476024575809514978857034477688443230263761729039797859697947454810551009108031457294164840611157524719173343259485881089252938664456637673337362424443150013961181619441267926981848009107466576314685961478748352388452114042115892243272514245081604607798243817586737546663059737344687130881861357423084448027959893402445303299089606081931041217035955143939567456782107203447898345284731038150377722447329202078375870541529539840051415759436083384408203659613313535094343772238691393447475364806171594
c2 = 130959534275704453216282334815034647265875632781798750901627773826812657339274362406246297925411291822193191483409847323315110393729020700526946712786793380991675008128561863631081095222226285788412970362518398757423705216112313533155390315204875516645459370629706277876211656753247984282379731850770447978537855070379324935282789327428625259945250066774049650951465043700088958965762054418615838049340724639373351248933494355591934236360506778496741051064156771092798005112534162050165095430065000827916096893408569751085550379620558282942254606978819033885539221416335848319082054806148859427713144286777516251724474319613960327799643723278205969253636514684757409059003348229151341200451785288395596484563480261212963114071064979559812327582474674812225260616757099890896900340007990585501470484762752362734968297532533654846190900571017635959385883945858334995884341767905619567505341752047589731815868489295690574109758825021386698440670611361127170896689015108432408490763723594673299472336065575301681055583084547847733168801030191262122130369687497236959760366874106043801542493392227424890925595734150487586757484304609945827925762382889592743709682485229267604771944535469557860120878491329984792448597107256325783346904408
n = 609305637099654478882754880905638123124918364116173050874864700996165096776233155524277418132679727857702738043786588380577485490575591029930152718828075976000078971987922107645530323356525126496562423491563365836491753476840795804040219013880969539154444387313029522565456897962200817021423704204077133003361140660038327458057898764857872645377236870759691588009666047187685654297678987435769051762120388537868493789773766688347724903911796741124237476823452505450704989455260077833828660552130714794889208291939055406292476845194489525212129635173284301782141617878483740788532998492403101324795726865866661786740345862631916793208037250277376942046905892342213663197755010315060990871143919384283302925469309777769989798197913048813940747488087191697903624669415774198027063997058701217124640082074789591591494106726857376728759663074734040755438623372683762856958888826373151815914621262862750497078245369680378038995425628467728412953392359090775734440671874387905724083226246587924716226512631671786591611586774947156657178654343092123117255372954798131265566301316033414311712092913492774989048057650627801991277862963173961355088082419091848569675686058581383542877982979697235829206442087786927939745804017455244315305118437
e1e2 = 3087
for e1 in range(2, 3087):if e1e2 % e1 == 0:  # 爆破可整除的ee2 = e1e2 // e1s, s1, s2 = gcdext(e1, e2)c = (pow(c1, s1, n) * pow(c2, s2, n)) % nm = long_to_bytes(iroot(c,s)[0])if m[0:6] == b'NSSCTF':print(m)

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

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

相关文章

亚信科技AntDB携手蓝凌软件,助推企业数字化办公转型升级

随着企业数字化转型的深入&#xff0c;企业对于协同办公、移动门户、数字运营、智能客服等方面的需求越来越高&#xff0c;数智化正成为催生新动能和新优势的关键力量。数字化的办公平台可以帮助企业实现各类信息、流程的集中化、数字化和智能化管理&#xff0c;为企业管理者提…

面试 JVM 八股文五问五答第一期

面试 JVM 八股文五问五答第一期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.JVM内存布局 Heap (堆区&#xff09; 堆是 OOM 故障最主要的发生区域。它是内存…

大数据毕业设计之前端03:logo、menu的折叠展开实现

关键字&#xff1a;BuildAdmin、pinia、logo、aside、menu、菜单折叠、Vue、ElementUI 前言 上一篇文章中&#xff0c;借助aside的实现讲了一些开发的小技巧&#xff0c;以及css的解读。本篇文章主要写一下如何填充aside的内容。 aside主要是由两个部分组成的&#xff1a;log…

数据结构与算法-Rust 版读书笔记-2线性数据结构-栈

数据结构与算法-Rust 版读书笔记-2线性数据结构-栈 一、线性数据结构概念 数组、栈、队列、双端队列、链表这类数据结构都是保存数据的容器&#xff0c;数据项之间的顺序由添加或删除时的顺序决定&#xff0c;数据项一旦被添加&#xff0c;其相对于前后元素就会一直保持位置不…

电脑入门基础知识

1.电脑键盘个数一般都是有多少个&#xff1f; 答&#xff1a;一般情况下&#xff0c;电脑键盘只有一个。但是&#xff0c;也有一些特殊的情况&#xff0c;例如游戏玩家可能会使用额外的游戏键盘&#xff0c;或者一些专业人士可能会使用多个键盘来提高工作效率。但是在大多数情…

[Spring~源码] ControllerAdvice揭秘

在Spring MVC中&#xff0c;我们经常使用ControllerAdvice注解&#xff0c;可以实现全局统一异常处理、全局数据绑定等功能。但是&#xff0c;它的实现原理是什么呢&#xff1f;在本文中&#xff0c;我们将深入探究ControllerAdvice的实现原理。 文章目录 什么是ControllerAdvi…

docker-compose.yml文件配置详解

简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YML 文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从 YML 文件配置中创建并启动所有服务。 docker compose文件是一个yaml格式的文件&a…

【Hadoop_04】HDFS的API操作与读写流程

1、HDFS的API操作1.1 客户端环境准备1.2 API创建文件夹1.3 API上传1.4 API参数的优先级1.5 API文件夹下载1.6 API文件删除1.7 API文件更名和移动1.8 API文件详情和查看1.9 API文件和文件夹判断 2、HDFS的读写流程&#xff08;面试重点&#xff09;2.1 HDFS写数据流程2.2 网络拓…

学会面向对象经典练习题21道

1.面向对象练习&#xff1a;设计小狗类 需求&#xff1a; 抽象形成一个小狗类Dog 属性&#xff1a;名字name 年龄age 品种kind 主人host 价格price 功能&#xff1a; 跑run&#xff1a;无参&#xff0c;打印&#xff1a;小狗Dog跑的老快了~ 吃eat&#xff1a;参数int n&#x…

当MongoDB主键为String时,mongoTemplate无法根据id查询的问题

MongoDB推荐使用ObjectId作为主键&#xff0c;但国内的开发都知道&#xff0c;事情往往不如人所愿&#xff0c;当我们真的出现了“_id”主键的类型为String时&#xff0c;且还必须想用mongoTemplate.findOne或findList时&#xff0c;直接使用该方法会导致查询结果为空。 因为m…

https 协议

目录 加密方式 对称加密 非对称加密 非对称加密 非对称加密 非对称加密 对称加密 AC证书 AC证书内容 数据摘要 数据签名 在我们前面学习的http协议里面&#xff0c;我们发送的内容都是明文传输的&#xff0c;所以在安全上并不安全&#xff0c;但是在现在信息发达的时…

Java高级技术:优化性能与扩展性的最佳实践

标题&#xff1a;Java高级技术&#xff1a;优化性能与扩展性的最佳实践 摘要&#xff1a;本文将介绍Java中一些高级技术&#xff0c;以提高性能和代码的扩展性。本文不包括反射和并发编程&#xff0c;旨在帮助开发者进一步提升Java应用程序的质量和可维护性。 优化性能的最佳实…

面试题目总结(三)

1. Spring、Springboot、springMVC、Spring Cloud 的区别&#xff1a; Spring&#xff1a;Spring 是一个开源的、轻量级的Java框架&#xff0c;提供了丰富的功能和组件&#xff0c;用于构建企业级应用程序。Spring框架包含了很多模块&#xff0c;包括核心容器、数据访问、事物…

MATLAB算法实战应用案例精讲-【数模应用】漫谈机器学习(七)

目录 几个高频面试题目 机器学习算法工程师需要掌握哪些编程语言? 1.Python 2. C# 3.JavaScript 4. R 5.Java

Linux之Apache服务器安装及配置

一、Apache服务器简介 Apache HTTP Server&#xff08;简称Apache&#xff09;是Apache软件基金会的一个开放源码的网页服务器&#xff0c;可以在大多数计算机操作系统中运行&#xff0c;由于其多平台和安全性被广泛使用。Apache曾经是世界使用排名第一的Web服务器软件&#xf…

VSCODE连接远程服务器

安装ssh插件 根据你的操作系统选择对应的版本进行下载和安装。 安装完成之后&#xff0c;启动vscode&#xff0c;选择左侧Extensions 选项卡&#xff0c;在输入框搜索 remote &#xff0c;选择安装Remote-SSH插件。 安装完成之后会在左侧新增一个选项卡Remote Explorer&#xf…

肥猫游戏报价器|计价器|王者荣耀代练陪练等游戏报价器软件介绍说明

目录 1. 前言2. 软件著作权3. 软件使用说明3.1 进入软件3.2 用户登录3.3 首页3.4 报价器3.4.1 总体介绍3.4.2 王者报价器3.4.3 LOL手游报价器3.4.4 英雄联盟报价器3.4.5 云顶之弈报价器3.4.7 王者水晶报价器3.4.8 和平精英报价器3.4.9 蛋仔派对报价器3.4.10 穿越火线报价器3.4.…

kafka学习笔记--broker工作流程、重要参数

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…

Linux mc命令教程:如何有效地使用mc命令(附案例详解和注意事项)

Linux mc命令介绍 mc命令是Linux中的一个视觉文件管理器&#xff0c;全称为Midnight Commander。它提供了一个用户友好的界面&#xff0c;使得在Linux环境中的文件和目录管理变得更加直观和方便。mc命令支持鼠标操作和颜色显示&#xff0c;同时也提供了一套菜单接口&#xff0…

TypeScript 常用高级类型

目录 前言&#xff1a; TypeScript 常用高级类型 基本概念 高级类型 1. 交叉类型&#xff08;Intersection Types&#xff09; 2. 联合类型&#xff08;Union Types&#xff09; 3. 映射类型&#xff08;Mapped Types&#xff09; 4. 条件类型&#xff08;Conditional…