1.[AFCTF2018]One Secret, Two encryption

题目的意思是将一个明文进行两种不同的加密过程,生成两种不同的密文,所以我们只要求解其中一个即可。

先进行公钥解析求出两次加密的(n,e)

with open(r'public1.pub','r') as f:pub = RSA.importKey(f.read())n1 = pub.n
e1 = pub.e
print(n1,e1)with open(r'public2.pub','r') as f:pub = RSA.importKey(f.read())n2 = pub.n
e2 = pub.e
print(n2,e2)
4850297138162223468826481623082440249579136876798312652735204698689613969008632545220976699170308454082390834742570718247804202060929493571642074679428565168405877110681518105667301785653517697684490982375078989886040451115082120928982588380914609273008153977907950532498605486225883973643141516024058315360572988744607134110254489421516026937249163493982681336628726033489124705657217768229058487155865265080427488028921879608338898933540825564889012166181346177276639828346376362168934208822467295673761876965864573164529336885250577357767314256581019474130651412100897839606491189424373959244023695669653213498329 1666626632960368239001159408047765991270250042206244157447171188195657302933019501932101777999510001235736338843107709871785906749393004257614129802061081155861433722380145001537181142613515290138835765236002811689986472280762408157176437503021753061588746520433720734608953639111558556930490721517579994493088551013050835690019772600744317398218183883402192060480979979456469937863257781362521184578142129444122428832106721725409309113975986436241662107879085361014650716439042856013203440242834878648506244428367706708431121109714505981728529818874621868624754285069693368779495316600601299037277003994790396589299
2367536768672000959668181171787295271898789288397672997134843418932405959946739637368044420319861797856771490573443003520137149324080217971836780570522258661419034481514883068092752166752967879497095564732505614751532330408675056285275354250157955321457579006360393218327164804951384290041956551855334492796719901818165788902547584563455747941517296875697241841177219635024461395596117584194226134777078874543699117761893699634303571421106917894215078938885999963580586824497040073241055890328794310025879014294051230590716562942538031883965317397728271589759718376073414632026801806560862906691989093298478752580277 65537

可以看出第一次的加密时的e远大于65537 ,且和n的长度一样长,
而第二次加密的e=65537。这里我选择的时第二次的加密。

import gmpy2
from Crypto.Util.number import *
from Crypto.PublicKey import RSAwith open(r'public2.pub','r') as f:pub = RSA.importKey(f.read())n2 = pub.n
e2 = pub.e
print(n2,e2)
p2 = 13574537518864130340355432541118272197612469786472599699388744722964224446468845332277885224151359348751827390453295742493408690917441802418376492710577443748707324892538263470296850322457820732500754398379697996486797672220145645775197396918813888878389297506519458452871204328250224991572191181011886880259
q2 = 174410123761631337520799179808598127914184971978811796722414215239874114048347830609255805203105210941441708658356189056418366104015120153227123562166980882513945308613658062284844636341082646995916907680076101741743945938845994542592182491688095893467336553001430454260431413695816790105384153941685561590503
phi2 = (p2-1)*(q2-1)
d2 = int(gmpy2.invert(e2,phi2))with open(r'flag_encry2','rb') as f:c = bytes_to_long(f.read())m = pow(c,d2,n2)
print(long_to_bytes(m))

得到b'\x02~\x83\xa7\xed\xd5\xde\xf1\xb8\xc6\x17%5:\xf7wZn\xc2WbDn)\x070\xfc\x98}\xa5\x96@\x90?Y\xba\xe5\xca\xdam\xbaGF\tz\xe7W\xcd\x94\x1c#\xecti\x8b\x89\x18hH\xc5\xbf\x10\xe983C}3Cz>HbX\xbe\x98<JG\x86??\xe2?\xfc\xaf\xb60\xbe\xec\xe3h\x07\xda\xea\xefSw\xb1t\x9bp\x03y\x12\xf2<\x99\xae\xf6\xde\x9b\xdf\xdd\xb4\xf7\x88t\xe0\xff% \x11"B\xa7r\xf2}\xf3\xaf\xca\x9dfI.\x08\xd2\xdb1\x18E\xed\xb38\xe5\xcc\xc3#\x1eT*\xec\xc4a\x95\xd9\xd9\xe7\xd4\x88O\xa3\'\xae9S\xa3\xd1\x7f~+\xefqa\xe1y\x82\x19l\x8a\x8b\xc5\xe8\xc1\xbd\t\x88\xbf+Th\xba\x8f\xfd\xb0\x89\n\x92\x00OpenSSL is widely used\r\nflag is afctf{You_Know_0p3u55I}'
最后面就是flag!

2.[XNUCA2018]Warmup

先看代码,确定是RSA加密。
再打开sniffed.pcapng,得到了多个加密的(n,e,c)。比较之后发现是Alice和Dave的N是相同的,可以采取共模攻击。

#sameMod
import gmpy2
from Crypto.Util.number import *#Alice
N1 = 25118186052801903419891574512806521370646053661385577314262283167479853375867074736882903917202574957661470179148882538361560784362740207649620536746860883395110443930778132343642295247749797041449601967434690280754279589691669366595486824752597992245067619256368446164574344449914827664991591873150416287647528776014468498025993455819767004213726389160036077170973994848480739499052481386539293425983093644799960322581437734560001018025823047877932105216362961838959964371333287407071080250979421489210165485908404019927393053325809061787560294489911475978342741920115134298253806238766543518220987363050115050813263
e1 = 7669
c1 = 22917655888781915689291442748409371798632133107968171254672911561608350738343707972881819762532175014157796940212073777351362314385074785400758102594348355578275080626269137543136225022579321107199602856290254696227966436244618441350564667872879196269074433751811632437228139470723203848006803856868237706401868436321225656126491701750534688966280578771996021459620472731406728379628286405214996461164892486734170662556518782043881759918394674517409304629842710180023814702447187081112856416034885511215626693534876901484105593275741829434329109239483368867518384522955176807332437540578688867077569728548513876841471
#Bob
N2 = 16469436076891819107430664586570790058365332532674438789146675997314595491187244459383921424835032067061885275554735557145712521498253296163910390306330135855302922157272936907898045006260883274333834229418152155694295570782207999565052765330228242362968933298758811404031322069181362855243705838799645685066332172969401743211750904509226291946662578751991715996103303976647730874845283020815000321892678220724802450248872234664036667264022384588371373249390642053539194423282694248940736528696713895935252137917260856321114370743803866601761211552228903425850365457360876898940583221394582723557605309072232855822121
e2 = 6581
c2 = 4505063757912237030635628747221272994572695359194588227137745184038156993684967692950382379416670048352697192034847437641005118396778451573252079960329423730857312903905473153821671728221711196041864671612553117481967219346650953589661738125004385506770270950850305018428133702570007489933820805282374786447043101075368159524627160317546994983074271744438830758703672549021794396005996657563893647623858053340802508275966224731156066494130781524282692069374034848523211418786348920660102645506245253266350928691868117037802311207429854527893101629350899064793606053845768875251087079676571106395735856068973034721101
#Carol
N3 = 25118874053328546753024263989563415727502048075025991833569501205632242337113077901532332374775395419348348701048189408092632079814832363732010926177912082562964016670890936281050864496155721672281093344082281963638371977758361202131970609490512245265719538879695944721744492357697438865016952531556200322390888505552979421131419142724258271230059422420336363879787201072494558351266967920357858873458121748582985640375604986741727501058494951533532341125506734541216305271046143705754799910729045435564538502962145048652820879590895993225869189429946329168385872964357133780290864454638364009252548494323438022231349
e3 = 7603
c3 = 19048737576987045063226590250127232246475809097432504428364908056604025281347091106863818770179886946036828033369811436258683836640686482186295887954603333674790126531024825196275247430917874230019937646154128686565959382549927974721595907720052683326347883917288387011898610688585967549063293999007662179537208541114528645906867834283911530827009496350564818050926992578354845375385136518922278665967914707035675926166195959084130878666446344492398932138098006690696811167313988561319314285936059926219964550560566892932146226765756939758814799908059743886502882106627085404296199027529328251035521224628003832913854
#Dave
N4 = 25118186052801903419891574512806521370646053661385577314262283167479853375867074736882903917202574957661470179148882538361560784362740207649620536746860883395110443930778132343642295247749797041449601967434690280754279589691669366595486824752597992245067619256368446164574344449914827664991591873150416287647528776014468498025993455819767004213726389160036077170973994848480739499052481386539293425983093644799960322581437734560001018025823047877932105216362961838959964371333287407071080250979421489210165485908404019927393053325809061787560294489911475978342741920115134298253806238766543518220987363050115050813263
e4 = 6947
c4 = 20494665879116666159961016125949070097530413770391893858215547229071116025581822729798313796823204861624912909030975450742122802775879194445232064367771036011021366123393917354134849911675307877324103834871288513274457941036453477034798647182106422619504345055259543675752998330786906376830335403339610903547255965127196315113331300512641046933227008101401416026809256813221480604662012101542846479052832128788279031727880750642499329041780372405567816904384164559191879422615238580181357183882111249939492668328771614509476229785062819586796660370798030562805224704497570446844131650030075004901216141893420140140568
#Eve
N5 = 22890921296489391468723563207482439368715048528954857727696611997213849453925407639478311064849002092841332187029922829503732594819405334557899018193836573827538367732876315261107786375883032702336369949813383359822945447348738639898488349249930794685147680602369574583272233186638639006722932514492412473499671240672786609392623108668740611409192410353088792926863759136574234682712437658167544420388503462191966664297486016864300587100339017032869018550693788156823952834586915180769842001379726271815407042736414817319930070363123671954772200618698975099285175523273493454655068815092164026790575552599814897599019
e5 = 32869
c5 = 10442917988766773396490991940667317808047327971317925137102489044030528557897992672507937554697482807481687087032349144551262471682307071658961878532382971828091109354257621491344013450604760870060142736551478301684143824750833285595247473821108423325384179883193988517286866263448490603966572975638061953752262499593905224215350312955589263376013886143461626877100441513745096129818379335382286822093358933880966180516628821646828214470420085945706208301656296701245704053699525077530655225353466026325593619997021961040046033670273837714651500872492969863747973610655943366074744584652270844784591048670022372904094
#Frank
N6 = 13610734669757105262564498565903016628884897465642188626977712600469428943454859353288561953332071112838192895353839306728698072861317475483364599428738408203420859463545743033507453999902768670963760117002226738834212826866972790759618857592183639430006129961804969344458099739275801744555852908477399106370903274847008168191406212026496201683437988789750311357127030874197256108087969060429116893649257007863251857384220793898187863784143099430027004383026281731367512474585221423627626454894508617409600974924819458907176960087389776551021286749078138520414178131682409288175569603840517742966654020297053280120421
e6 = 10369
c6 = 338230230737795357907632634565480424320738100416872971593313504623031636549506308515885211507225139575284223841381475563865888650857636729319870056097265003381655374810743643787055050913356678153093440043937297044556267703050582739481148800234028265995678045070593516597241200279290432036592464223968778632301959998956082387007036826439290490046693942095006926116019667542427239110629330500882759564195704755475923049022289141527406786806241793809546426372343971278513127134648233599072200913066293287533269250758307985763118372706166149682768349327629911555785267589749222331760647201324907861960876452039787203524
#print(N1 == N4)#True
gcd = gmpy2.gcdext(e1,e4)
s,t = gcd[1],gcd[2]
m = (pow(c1,s,N1)*pow(c4,t,N1))%N1
print(long_to_bytes(m))
flag : b'FLAG{g00d_Luck_&_Hav3_Fun}'

3.[INSHack2017]rsa16m

给出的n,c超级大,e = 65537。
这里我将n和c分开来了,通过比较字节可以发现两者相差682926字节,相当于682926位数,而这是在16进制下,转成10进制相差的位数大于682926的。可以猜测me >> n,所以只需要对c开e次根就可以了。

import gmpy2
from Crypto.Util.number import *with open(r'c.txt','r') as f:c = int(f.read(),16)e = 65537
m = int(gmpy2.iroot(c,e)[0])
print(long_to_bytes(m))

得到b’INSA{(I)NSA_W0uld_bE_pr0uD}’

BUUCTF 打卡8相关推荐

  1. BUUCTF 打卡2

    1.RSA4 题目给出了三组c和n,猜测是广播攻击.猜测e = 3.自己写的脚本有点不靠谱,就借用书上的.值得注意的是题目给出的c和n都是5进制数!!!(仔细点的话可以看出数据中没有出现>=5的 ...

  2. BUUCTF 打卡4

    1.rot 首先看到这些数字,第一反应是觉得是ascii码,而且题目是rot,应该是属于移位密码了,把前几个数跟'flag'对应,出来的不对.既然不是小写,那应该是大写'FLAG',得到 FLAG I ...

  3. 转发和重定向简介及与之相关的(URL)参数(parameter)、属性(attribute)问题探讨

    转发和重定向简介及与之相关的(URL)参数(parameter).属性(attribute)问题探讨 蜀中孤鹰 2019-07-15 15:55:49 101 收藏 最后发布:2019-07-15 1 ...

  4. BUUCTF 每日打卡 2021-4-5

    引言 出人意料的得到消息要被拉去打国赛(第十四届全国大学生信息安全竞赛-创新实践能力赛)了(一脸懵逼) 我还什么都没学呢(摸鱼) 嘛,不过被分到第二梯队大概也没抱什么希望吧(继续摸鱼) 害,说丧气话也 ...

  5. BUUCTF 每日打卡 2021-8-18

    引言 之前这段时间一直在打比赛.写文章,没时间更新 关于之前说的关于Wiener's Attack的完整推导,详见我的知乎文章 [InCTF 2021]Gold_digger 加密代码如下: impo ...

  6. BUUCTF 每日打卡 2021-5-6

    引言 五一假期全鸽了... 果然当鸽子会上瘾... 假期前一天晚上留了半小时搞这道 RSA & what ,结果搞到凌晨把我心态搞崩了 然后就鸽了... 今天终于搞出来了 RSA & ...

  7. BUUCTF 每日打卡 2021-4-14

    引言 今日无战事 这是base?? 附件内容: dict:{0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U' ...

  8. BUUCTF 每日打卡 2021-4-28

    引言 数分考完了 明天蓝帽杯 可怜的RSA 附件给了公钥: -----BEGIN PUBLIC KEY----- MIIBJDANBgkqhkiG9w0BAQEFAAOCAREAMIIBDAKCAQM ...

  9. BUUCTF 每日打卡 2021-7-19

    引言 上午学了4个小时车,只能下午来更了( [NPUCTF2020]认清形势,建立信心 加密代码如下: from Crypto.Util.number import * from gmpy2 impo ...

最新文章

  1. 如何查看linux版本
  2. linux报错 find: missing argument to `-exec'
  3. Oracle中PLSQL中if语句的写法
  4. emoji表情过滤处理
  5. 将向量附加到向量[重复]
  6. 8篇文章系统梳理ARM开发中的文件类型
  7. MySQL的快速修复
  8. SQL Server 存储
  9. 设计模式详解(链接)
  10. 不一样的国外广告联盟与cpa赚钱!
  11. 网络通信中 TCP 产生 RST 的三个条件分析
  12. 5G-SUPI-SUPC-IMSI
  13. Linux环境下,文件的压缩/解压
  14. C/C++定义全局变量/常量几种方法的区别
  15. springboot整合elasticsearch8
  16. java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。
  17. ibm类脑计算机,IBM首度公开仿人脑计算机
  18. 更新DOTA2显示无法连接到更新服务器,Dota2国服不能更新出现错误的解决办法
  19. 按年/月/日的顺序输入一个任意日期,在页面输出:这是这一年的第几天如:2016年1月2日 是2016年的第2天,而2016年12月31日则是2016年的第366天
  20. Swift Intermediate Language

热门文章

  1. java中while 和do......while的区别???
  2. 路由器可以上网但是显示没有连接到服务器,路由器不可上网怎么设置_路由器可以连接但无法上网怎么办...
  3. MATLAb的break和continue用法区别
  4. Python数据可视化-Matplotlib线性图(折线图等) 代码教学 Part 1
  5. Linux 基础实战(二)
  6. 数据存储备份的策略技术
  7. 计算机云开头的词语,云字开头的三字词语
  8. 关于促销活动页面测试的那些事儿
  9. 磁盘空间linux命令fdisk,解决fdisk与df命令显示的磁盘空间不一样
  10. [转]Flex 处理bmp图片as