BUU-crypto-刷题记录14

[BJDCTF2020]RSA

题目

from Crypto.Util.number import getPrime,bytes_to_long

flag=open("flag","rb").read()

p=getPrime(1024)
q=getPrime(1024)
assert(e<100000)
n=p*q
m=bytes_to_long(flag)
c=pow(m,e,n)
print c,n
print pow(294,e,n)

p=getPrime(1024)
n=p*q
m=bytes_to_long("BJD"*32)
c=pow(m,e,n)
print c,n

'''
output:
12641635617803746150332232646354596292707861480200207537199141183624438303757120570096741248020236666965755798009656547738616399025300123043766255518596149348930444599820675230046423373053051631932557230849083426859490183732303751744004874183062594856870318614289991675980063548316499486908923209627563871554875612702079100567018698992935818206109087568166097392314105717555482926141030505639571708876213167112187962584484065321545727594135175369233925922507794999607323536976824183162923385005669930403448853465141405846835919842908469787547341752365471892495204307644586161393228776042015534147913888338316244169120  13508774104460209743306714034546704137247627344981133461801953479736017021401725818808462898375994767375627749494839671944543822403059978073813122441407612530658168942987820256786583006947001711749230193542370570950705530167921702835627122401475251039000775017381633900222474727396823708695063136246115652622259769634591309421761269548260984426148824641285010730983215377509255011298737827621611158032976420011662547854515610597955628898073569684158225678333474543920326532893446849808112837476684390030976472053905069855522297850688026960701186543428139843783907624317274796926248829543413464754127208843070331063037
381631268825806469518166370387352035475775677163615730759454343913563615970881967332407709901235637718936184198930226303761876517101208677107311006065728014220477966000620964056616058676999878976943319063836649085085377577273214792371548775204594097887078898598463892440141577974544939268247818937936607013100808169758675042264568547764031628431414727922168580998494695800403043312406643527637667466318473669542326169218665366423043579003388486634167642663495896607282155808331902351188500197960905672207046579647052764579411814305689137519860880916467272056778641442758940135016400808740387144508156358067955215018
979153370552535153498477459720877329811204688208387543826122582132404214848454954722487086658061408795223805022202997613522014736983452121073860054851302343517756732701026667062765906277626879215457936330799698812755973057557620930172778859116538571207100424990838508255127616637334499680058645411786925302368790414768248611809358160197554369255458675450109457987698749584630551177577492043403656419968285163536823819817573531356497236154342689914525321673807925458651854768512396355389740863270148775362744448115581639629326362342160548500035000156097215446881251055505465713854173913142040976382500435185442521721  12806210903061368369054309575159360374022344774547459345216907128193957592938071815865954073287532545947370671838372144806539753829484356064919357285623305209600680570975224639214396805124350862772159272362778768036844634760917612708721787320159318432456050806227784435091161119982613987303255995543165395426658059462110056431392517548717447898084915167661172362984251201688639469652283452307712821398857016487590794996544468826705600332208535201443322267298747117528882985955375246424812616478327182399461709978893464093245135530135430007842223389360212803439850867615121148050034887767584693608776323252233254261047
'''

解题
已知

n1=13508774104460209743306714034546704137247627344981133461801953479736017021401725818808462898375994767375627749494839671944543822403059978073813122441407612530658168942987820256786583006947001711749230193542370570950705530167921702835627122401475251039000775017381633900222474727396823708695063136246115652622259769634591309421761269548260984426148824641285010730983215377509255011298737827621611158032976420011662547854515610597955628898073569684158225678333474543920326532893446849808112837476684390030976472053905069855522297850688026960701186543428139843783907624317274796926248829543413464754127208843070331063037
c1=12641635617803746150332232646354596292707861480200207537199141183624438303757120570096741248020236666965755798009656547738616399025300123043766255518596149348930444599820675230046423373053051631932557230849083426859490183732303751744004874183062594856870318614289991675980063548316499486908923209627563871554875612702079100567018698992935818206109087568166097392314105717555482926141030505639571708876213167112187962584484065321545727594135175369233925922507794999607323536976824183162923385005669930403448853465141405846835919842908469787547341752365471892495204307644586161393228776042015534147913888338316244169120
c2=381631268825806469518166370387352035475775677163615730759454343913563615970881967332407709901235637718936184198930226303761876517101208677107311006065728014220477966000620964056616058676999878976943319063836649085085377577273214792371548775204594097887078898598463892440141577974544939268247818937936607013100808169758675042264568547764031628431414727922168580998494695800403043312406643527637667466318473669542326169218665366423043579003388486634167642663495896607282155808331902351188500197960905672207046579647052764579411814305689137519860880916467272056778641442758940135016400808740387144508156358067955215018
m2=294
n2=n1
c3=979153370552535153498477459720877329811204688208387543826122582132404214848454954722487086658061408795223805022202997613522014736983452121073860054851302343517756732701026667062765906277626879215457936330799698812755973057557620930172778859116538571207100424990838508255127616637334499680058645411786925302368790414768248611809358160197554369255458675450109457987698749584630551177577492043403656419968285163536823819817573531356497236154342689914525321673807925458651854768512396355389740863270148775362744448115581639629326362342160548500035000156097215446881251055505465713854173913142040976382500435185442521721
n3=12806210903061368369054309575159360374022344774547459345216907128193957592938071815865954073287532545947370671838372144806539753829484356064919357285623305209600680570975224639214396805124350862772159272362778768036844634760917612708721787320159318432456050806227784435091161119982613987303255995543165395426658059462110056431392517548717447898084915167661172362984251201688639469652283452307712821398857016487590794996544468826705600332208535201443322267298747117528882985955375246424812616478327182399461709978893464093245135530135430007842223389360212803439850867615121148050034887767584693608776323252233254261047

由于n1与n3用的q是一样的,则

q=gmpy2.gcd(n1,n3)
p=n1//q

由于e比较小,而且我们知道m2,则可以直接爆破

for e in range(10000000000):
    if c2 == pow(m2,e,n2):
        print(e)
        break

最后就可以常规解了

phi = (q-1) * (p-1)
d = libnum.invmod(e,phi)
m = pow(c1,d,n1)
print(long_to_bytes(m))

得到

52361
b'BJD{p_is_common_divisor}'

答案
flag{p_is_common_divisor}

[WUSTCTF2020]佛说:只能四天

题目
hint

1. 虽然有点不环保,但hint好像是一次性的,得到后就没有利用价值了。
2. 凯撒不是最后一步,by the way,凯撒为什么叫做凯撒?

题目

尊即寂修我劫修如婆愍闍嚤婆莊愍耨羅嚴是喼婆斯吶眾喼修迦慧迦嚩喼斯願嚤摩隸所迦摩吽即塞願修咒莊波斯訶喃壽祗僧若即亦嘇蜜迦須色喼羅囉咒諦若陀喃慧愍夷羅波若劫蜜斯哆咒塞隸蜜波哆咤慧聞亦吽念彌諸嘚嚴諦咒陀叻咤叻諦缽隸祗婆諦嚩阿兜宣囉吽色缽吶諸劫婆咤咤喼愍尊寂色缽嘚闍兜阿婆若叻般壽聞彌即念若降宣空陀壽愍嚤亦喼寂僧迦色莊壽吽哆尊僧喼喃壽嘚兜我空所吶般所即諸吽薩咤諸莊囉隸般咤色空咤亦喃亦色兜哆嘇亦隸空闍修眾哆咒婆菩迦壽薩塞宣嚩缽寂夷摩所修囉菩阿伏嘚宣嚩薩塞菩波吶波菩哆若慧愍蜜訶壽色咒兜摩缽摩諦劫諸陀即壽所波咤聞如訶摩壽宣咤彌即嚩蜜叻劫嘇缽所摩闍壽波壽劫修訶如嚩嘇囉薩色嚤薩壽修闍夷闍是壽僧劫祗蜜嚴嚩我若空伏諦念降若心吽咤隸嘚耨缽伏吽色寂喃喼吽壽夷若心眾祗喃慧嚴即聞空僧須夷嚴叻心願哆波隸塞吶心須嘇摩咤壽嘚吶夷亦心亦喃若咒壽亦壽囑囑

题目描述

圣经分为《旧约全书》和《新约全书》

解题
根据提示,
与佛论禅没有解出
新约佛论禅解出:

平等文明自由友善公正自由诚信富强自由自由平等民主平等自由自由友善敬业平等公正平等富强平等自由平等民主和谐公正自由诚信平等和谐公正公正自由法治平等法治法治法治和谐和谐平等自由和谐自由自由和谐公正自由敬业自由文明和谐平等自由文明和谐平等和谐文明自由和谐自由和谐和谐平等和谐法治公正诚信平等公正诚信民主自由和谐公正民主平等平等平等平等自由和谐和谐和谐平等和谐自由诚信平等和谐自由自由友善敬业平等和谐自由友善敬业平等法治自由法治和谐和谐自由友善公正法治敬业公正友善爱国公正民主法治文明自由民主平等公正自由法治平等文明平等友善自由平等和谐自由友善自由平等文明自由民主自由平等平等敬业自由平等平等诚信富强平等友善敬业公正诚信平等公正友善敬业公正平等平等诚信平等公正自由公正诚信平等法治敬业公正诚信平等法治平等公正友善平等公正诚信自由公正友善敬业法治法治公正公正公正平等公正诚信自由公正和谐公正平等

社会主义核心价值观编码解出:

RLJDQTOVPTQ6O6duws5CD6IB5B52CC57okCaUUC3SO4OSOWG3LynarAVGRZSJRAEYEZ_ooe_doyouknowfence

do you know fence?
栅栏密码
每组字数为4,解密得:

R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L_doyouknowCaesar_

do you know Caesar?
下一步用凯撒
提示了凯撒不是最后一步
先用凯撒试

c='R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L'
m=[]
for i in range(26):
    for j in c:
        if 'A'<=j<='Z':
            m.append(chr((ord(j)+i-ord('A'))%26+ord('A')))
        else:
            m.append(j)
    print(''.join(m))
    m=[]

运行出的结果有:

R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L
S5VBMDVWKEDHE63SRJTAUCPTP54KWCPSQ5TBU2PFRDXZ6DHFP53A67M
T5WCNEWXLFEIF63TSKUBVDQUQ54LXDQTR5UCV2QGSEYA6EIGQ53B67N
U5XDOFXYMGFJG63UTLVCWERVR54MYERUS5VDW2RHTFZB6FJHR53C67O
V5YEPGYZNHGKH63VUMWDXFSWS54NZFSVT5WEX2SIUGAC6GKIS53D67P
W5ZFQHZAOIHLI63WVNXEYGTXT54OAGTWU5XFY2TJVHBD6HLJT53E67Q
X5AGRIABPJIMJ63XWOYFZHUYU54PBHUXV5YGZ2UKWICE6IMKU53F67R
Y5BHSJBCQKJNK63YXPZGAIVZV54QCIVYW5ZHA2VLXJDF6JNLV53G67S
Z5CITKCDRLKOL63ZYQAHBJWAW54RDJWZX5AIB2WMYKEG6KOMW53H67T
A5DJULDESMLPM63AZRBICKXBX54SEKXAY5BJC2XNZLFH6LPNX53I67U
B5EKVMEFTNMQN63BASCJDLYCY54TFLYBZ5CKD2YOAMGI6MQOY53J67V
C5FLWNFGUONRO63CBTDKEMZDZ54UGMZCA5DLE2ZPBNHJ6NRPZ53K67W
D5GMXOGHVPOSP63DCUELFNAEA54VHNADB5EMF2AQCOIK6OSQA53L67X
E5HNYPHIWQPTQ63EDVFMGOBFB54WIOBEC5FNG2BRDPJL6PTRB53M67Y
F5IOZQIJXRQUR63FEWGNHPCGC54XJPCFD5GOH2CSEQKM6QUSC53N67Z
G5JPARJKYSRVS63GFXHOIQDHD54YKQDGE5HPI2DTFRLN6RVTD53O67A
H5KQBSKLZTSWT63HGYIPJREIE54ZLREHF5IQJ2EUGSMO6SWUE53P67B
I5LRCTLMAUTXU63IHZJQKSFJF54AMSFIG5JRK2FVHTNP6TXVF53Q67C
J5MSDUMNBVUYV63JIAKRLTGKG54BNTGJH5KSL2GWIUOQ6UYWG53R67D
K5NTEVNOCWVZW63KJBLSMUHLH54COUHKI5LTM2HXJVPR6VZXH53S67E
L5OUFWOPDXWAX63LKCMTNVIMI54DPVILJ5MUN2IYKWQS6WAYI53T67F
M5PVGXPQEYXBY63MLDNUOWJNJ54EQWJMK5NVO2JZLXRT6XBZJ53U67G
N5QWHYQRFZYCZ63NMEOVPXKOK54FRXKNL5OWP2KAMYSU6YCAK53V67H
O5RXIZRSGAZDA63ONFPWQYLPL54GSYLOM5PXQ2LBNZTV6ZDBL53W67I
P5SYJASTHBAEB63POGQXRZMQM54HTZMPN5QYR2MCOAUW6AECM53X67J
Q5TZKBTUICBFC63QPHRYSANRN54IUANQO5RZS2NDPBVX6BFDN53Y67K

没有什么线索,,
有数字有字母的话可能是Base加密
在尝试了base64、base32的加解密,
并在R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L后加上了“=”
将输出换成

m=base64.b32decode(''.join(m))
print(m)

得到

b'\x8fh\x05\x8a\x95H\xc4a\xfbq\x82%\x99\x85\xd2wx\x9a\x85\xd1\x7fd\t\xe9\xc4\x80\xad\x8f\x08\xc4ww\x9f}'
b'\x97j\x16\x0e\xb6Q\x06r{r\x8af\n\t\xf3\x7fx\xab\t\xf2\x87f\x1ai\xe5\x88\xef\x9f\x0c\xe5\x7fv\x0f}'
b'\x9fl&\x92\xd7YH\x82\xfbs\x92\xa8\x1a\x8e\x14\x87x\xbb\x8e\x13\x8fh*\xea\x06\x910\x0f\x11\x06\x87v\x1f}'
b"\xa7n7\x16\xf8a\x8a\x93{t\x9a\xea+\x125\x8fx\xcc\x124\x97j;j'\x99r\x1f\x15'\x8fv/}"
b'\xafpG\x9b\x19i\xcc\xa3\xfbu\xa3,;\x96V\x97x\xdc\x96U\x9flK\xeaH\xa1\x80/\x19H\x97v?}'
b'\xb7rX\x1f r\x0e\xb4{v\xabnL\x1aw\x9fx\xe0\x1av\xa7n\\ji\xa9\xc2?\x1di\x9fvO~'
b'\xbf@h\xa0\x01zP\xc4\xfbw\xb3\xb0\\\x9e\x98\xa7x\xf0\x9e\x97\xafpl\xea\x8a\xb2\x04O!\x8a\xa7v_~'
b'\xc7By$"\x82\x92\xd5{x\xbb\xf2`"\xb9\xafy\x01"\xb8\xb7rpj\xab\xbaF_%\xab\xafvo~'
b'\xcfD\x89\xa8C\x8a\xd4\xe5\xfby\xc4\x00p\xa6\xc0\xb7y\x11\xa6\xd9\xbf@\x80\xea\xcc\xc2\x88o)\xcc\xb7v\x7f~'
b'\x07F\x9a,d\x93\x16\xf6{`\xccB\x81*\xe1\xbfy"*\xe0\xc7B\x91j\xed\xca\xca\x7f-\xed\xbfv\x8f~'
b'\x0fH\xaa\xb0\x85\x9bY\x06\xfba\x04\x84\x91\xaf\x02\xc7y2\xaf\x01\xcfD\xa1\xeb\x0e\x03\x0c\x8f2\x0e\xc7v\x9f~'
b'\x17J\xbb4\xa6\xa3\x9b\x17{b\x0c\xc6\xa23#\xcfyC3"\x07F\xb2k/\x0bN\x9f6/\xcfv\xaf~'
b"\x1fL\xcb\xb8\xc7\xab\xdd'\xfbc\x15\x08\xb2\xb4\x04\x07yS\xb4\x03\x0fH\xc2\xe8\x10\x13\x90\xaf:P\x07v\xbf~"
b"'N\xdc<\xe8\xb4\x1f8{d\x1dJ\xc38%\x0fyd8$\x17J\xd3h1\x1b\xd2\xbf>q\x0fv\xcf\x7f"
b'/P\xec\xc1\t\xbcaH\xfbe%\x8c\xd3\xbcF\x17yt\xbcE\x1fL\xe3\xe8R$\x14\xcfB\x92\x17v\xdf\x7f'
b"7R\xf0E*\xc4\xa3Y{f-\xce\xe4@g\x1fy\x85@f'N\xf4hs,V\xdfF\xb3\x1fv\xef|"
b"?U\x00\xc9K\xcc\xe5i\xfbg6\x10\xf4\xc4\x88'y\x95\xc4\x87/Q\x04\xe8\x944\x98\xefJ\xd4'v\xff|"
b"GW\x11Ml\x05'z{h>S\x05H\xa9/x\x06H\xa87S\x15h\xb5<\xda\xffN\xf5/w\x0f|"
b'OY!\xd1\x8d\ri\x8a\xfbi@\x15\x15\xcc\xca7x\x16\xcc\xc9?U%\xe8\xd6E\x1d\x0fS\x167w\x1f|'
b"W[2U\xae\x15\xab\x9b{jHW&P\xeb?x'P\xeaGW6h\xf7M_\x1fW7?w/|"
b'_]B\xd9\xcf\x1d\xec\x0b\xfbkP\x996\xd5\x0cGx7\xd5\x0bOYF\xe9\x18U\xa1/X\x18Gw?|'
b'g_S]\xf0&.\x1c{lX\xdbGY-OxHY,W[Wi9]\xe3?\\9OwO|'
b'oac\xe2\x11.p,\xfbma\x1dW\xddNWxX\xddM_]g\xe9@f%O`@Ww_|'
b'wctf2020{ni_hao_xiang_xiang_da_wo}'
b'\x7fe\x84\x82S8@@\xfboq\xa1x\xe5\x90gxy\xe5\x8foa\x88\xe9\x82p)o\x00\x82gw\x7f}'
b'\x87g\x95\x06t@\x82Q{py\xe3\x89\x01\xb1ox\x8a\x01\xb0wc\x99i\xa3xk\x7f\x04\xa3ow\x8f}'

可以轻易看出倒数第三行为flag
wctf2020{ni_hao_xiang_xiang_da_wo}
答案
flag{ni_hao_xiang_xiang_da_wo}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值