[NSSCTF 2022 Spring Recruit] Crypto wp

classic

题目

UZZJAM{UIXETGR7TMWD42SKTCWEP4AG_mhrlmshnayfihzl}

第一层是凯撒密码

NSSCTF{NBQXMZK7MFPW42LDMVPXI4TZ_fakeflagtrybase}

稍微有点英语基础就知道fakeflagtrybase是假flag,然后去试base,最后用base32解NBQXMZK7MFPW42LDMVPXI4TZ得have_a_nice_try,用NSSCTF{}包裹就行。

factor

题目

n=240546297453496858231088405356129350257,你能把这个整数分解成两个素数的积吗?=> n = p * q
flag:NSSCTF{md5(min(p,q)+max(p,q))}

素数分解问题,属于RSA算法中的数学问题,是基于这样的事实:生成大素数是容易的,但是给定一个大数(两个素数的乘积),找出它的因子(素数分解)是困难的。常用分解素数方法:1.yafu
2.sage 3.factordb在线网站,这里讲第一种。
自己去网上找yafu的包,下载好后进入目录下打开cmd输入yafu-x64.exe启动,启动后使用factor(n)
即可分解,分解出p = 13891650093628440437, q = 17315890900809982861,拼接后再md5加密即可得到flag

Vigenere

题目

Ulw prodw ybspv bc a yainoxav ctsyg , nmp znwaf kqpjilr wef spq xsexx ik gpyz eumyr oavupyl xhcwhvvpr. FLCCLX{eeztlh_xewvu_lpy}Uhwe gf vuf wltqe wpkgjry pref wxrsc ztc tzw rrswgg. Ovwjaboi'k esfwlkzf mk tvl suvvok sl k lgl qs ssdx , rak kgifr cbxdk kvnhik yboe tgvok thbn lg fljry .Produced by .Zyd ak kzqejmsad , ljr qigive ozq ubw vxctafa vo lsgn slspqt bestkasscn jgkovwj ka ulw uklsfer csla onvk , vuf twhzlw ojb jw ykkshwf oz hwldifq mapak mral Yqq cikmywk vgfumfr yn zao bopq hxlq .
仔细找找key吧

不出意外的话比较有意义的,最有可能是key的单词只有Produced by bestkasscn。一个个试就行了。

rrrsssaaa

题目

from Crypto.Util.number import *
import gmpy2
from functools import reduce
from secret import flagp = getPrime(1024)
i = 0
while True:r = p * 5 + iif isPrime(r):i = 0breakelse:i += 1
while True:q = p * 10 + iif isPrime(q):breakelse:i += 1n = p * q * r
e = 65537
c = pow(bytes_to_long(flag.encode()), e, n)
print('c=' + str(c))
print('p3=' + str(pow(p, 3, n)))
print('q3=' + str(pow(q, 3, n)))
print('r3=' + str(pow(r, 3, n)))
# n = 44571911854174527304485400947383944661319242813524818888269963870884859557542264803774212076803157466539443358890313286282067621989609252352994203884813364011659788234277369629312571477760818634118449563652776213438461157699447304292906151410018017960605868035069246651843561595572415595568705784173761441087845248621463389786351743200696279604003824362262237505386409700329605140703782099240992158439201646344692107831931849079888757310523663310273856448713786678014221779214444879454790399990056124051739535141631564534546955444505648933134838799753362350266884682987713823886338789502396879543498267617432600351655901149380496067582237899323865338094444822339890783781705936546257971766978222763417870606459677496796373799679580683317833001077683871698246143179166277232084089913202832193540581401453311842960318036078745448783370048914350299341586452159634173821890439194014264891549345881324015485910286021846721593668473
# c = 11212699652154912414419576042130573737460880175860430868241856564678915039929479534373946033032215673944727767507831028500814261134142245577246925294110977629353584372842303558820509861245550773062016272543030477733653059813274587939179134498599049035104941393508776333632172797303569396612594631646093552388772109708942113683783815011735472088985078464550997064595366458370527490791625688389950370254858619018250060982532954113416688720602160768503752410505420577683484807166966007396618297253478916176712265476128018816694458551219452105277131141962052020824990732525958682439071443399050470856132519918853636638476540689226313542250551212688215822543717035669764276377536087788514506366740244284790716170847347643593400673746020474777085815046098314460862593936684624708574116108322520985637474375038848494466480630236867228454838428542365166285156741433845949358227546683144341695680712263215773807461091898003011630162481
# p3 = 891438237083490546089708018947678893226384856270496377765399277417697191150845296075484241536063149330788867177806265725641352439792185047059884077696267280233195764685547392586251429555216372682368991273055524268769223153988946085858123028200360359212117360701384933036871231911448311911374115683475228820531478240539549424647154342506853356292956506486091063660095505979187297020928573605860329881982122478494944846700224611808246427660214535971723459345029873385956677292979041143593821672034573140001092625650099257402018634684516092489263998517027205660003413512870074652126328536906790020794659204007921147300771594986038917179253827432120018857213350120695302091483756021206199805521083496979628811676116525321724267588515105188480380865374667274442027086789352802613365511142499668793725505110436809024171752137883546327359935102833441492430652019931999144063825010678766130335038975376834579129516127516820037383067
# q3 = 44571911854174527304485400947383944661319242813524818888269963870884859557542264803774212076803157466539443358890313286282067621989609252352994203884813364011659788234277369629312571477760818634118449563652776213438461157699447304292906151410018017960605868035069246651843561595572415595568705784173761440671033435053531971051698504592848580356684103015611323747688216493729331061402058160819388999663041629882482138465124920580049057123360829897432472221079140360215664537272316836767039948368780837985855835419681893347839311156887660438769948501100287062738217966360434291369179859862550767272985972263442512061098317471708987686120577904202391381040801620069987103931326500146536990700234262413595295698193570184681785854277656410199477649697026112650581343325348837547631237627207304757407395388155701341044939408589591213693329516396531103489233367665983149963665364824119870832353269655933102900004362236232825539480774
# r3 = 22285955927087263652242700473691972330659621406762409444134981935442429778771132401887106038401578733269721679445156643141033810994804626176497101942406682005829894117138684814656285738880409317059224781826388106719230578849723652146453075705009008980302934017534623325921780797786207797784352892086880720749202442492937918619992591614713131681306874944356693778359565004415437554407990089293135634916859631279984463829118336826115430997439527110961309956466956650522900331263720500751112297418506140413317489683875995326726992533904683800042127871963320754241310699432792081707870167598822650064976439270556418985242630368723264289700246406905189810458354474959276748887369363592834205660349184660073395182450526542246354364903399132116153732074081050985584216815493617906868615192465631416955706457835185743023758573279838341229835613609332206338401219168119635681832981552328638132500079074010106995297184587143613134093145

exp

from Crypto.Util.number import *
import gmpy2
from functools import reduce
from secret import flagn = 44571911854174527304485400947383944661319242813524818888269963870884859557542264803774212076803157466539443358890313286282067621989609252352994203884813364011659788234277369629312571477760818634118449563652776213438461157699447304292906151410018017960605868035069246651843561595572415595568705784173761441087845248621463389786351743200696279604003824362262237505386409700329605140703782099240992158439201646344692107831931849079888757310523663310273856448713786678014221779214444879454790399990056124051739535141631564534546955444505648933134838799753362350266884682987713823886338789502396879543498267617432600351655901149380496067582237899323865338094444822339890783781705936546257971766978222763417870606459677496796373799679580683317833001077683871698246143179166277232084089913202832193540581401453311842960318036078745448783370048914350299341586452159634173821890439194014264891549345881324015485910286021846721593668473
c = 11212699652154912414419576042130573737460880175860430868241856564678915039929479534373946033032215673944727767507831028500814261134142245577246925294110977629353584372842303558820509861245550773062016272543030477733653059813274587939179134498599049035104941393508776333632172797303569396612594631646093552388772109708942113683783815011735472088985078464550997064595366458370527490791625688389950370254858619018250060982532954113416688720602160768503752410505420577683484807166966007396618297253478916176712265476128018816694458551219452105277131141962052020824990732525958682439071443399050470856132519918853636638476540689226313542250551212688215822543717035669764276377536087788514506366740244284790716170847347643593400673746020474777085815046098314460862593936684624708574116108322520985637474375038848494466480630236867228454838428542365166285156741433845949358227546683144341695680712263215773807461091898003011630162481
p3 = 891438237083490546089708018947678893226384856270496377765399277417697191150845296075484241536063149330788867177806265725641352439792185047059884077696267280233195764685547392586251429555216372682368991273055524268769223153988946085858123028200360359212117360701384933036871231911448311911374115683475228820531478240539549424647154342506853356292956506486091063660095505979187297020928573605860329881982122478494944846700224611808246427660214535971723459345029873385956677292979041143593821672034573140001092625650099257402018634684516092489263998517027205660003413512870074652126328536906790020794659204007921147300771594986038917179253827432120018857213350120695302091483756021206199805521083496979628811676116525321724267588515105188480380865374667274442027086789352802613365511142499668793725505110436809024171752137883546327359935102833441492430652019931999144063825010678766130335038975376834579129516127516820037383067
q3 = 44571911854174527304485400947383944661319242813524818888269963870884859557542264803774212076803157466539443358890313286282067621989609252352994203884813364011659788234277369629312571477760818634118449563652776213438461157699447304292906151410018017960605868035069246651843561595572415595568705784173761440671033435053531971051698504592848580356684103015611323747688216493729331061402058160819388999663041629882482138465124920580049057123360829897432472221079140360215664537272316836767039948368780837985855835419681893347839311156887660438769948501100287062738217966360434291369179859862550767272985972263442512061098317471708987686120577904202391381040801620069987103931326500146536990700234262413595295698193570184681785854277656410199477649697026112650581343325348837547631237627207304757407395388155701341044939408589591213693329516396531103489233367665983149963665364824119870832353269655933102900004362236232825539480774
r3 = 22285955927087263652242700473691972330659621406762409444134981935442429778771132401887106038401578733269721679445156643141033810994804626176497101942406682005829894117138684814656285738880409317059224781826388106719230578849723652146453075705009008980302934017534623325921780797786207797784352892086880720749202442492937918619992591614713131681306874944356693778359565004415437554407990089293135634916859631279984463829118336826115430997439527110961309956466956650522900331263720500751112297418506140413317489683875995326726992533904683800042127871963320754241310699432792081707870167598822650064976439270556418985242630368723264289700246406905189810458354474959276748887369363592834205660349184660073395182450526542246354364903399132116153732074081050985584216815493617906868615192465631416955706457835185743023758573279838341229835613609332206338401219168119635681832981552328638132500079074010106995297184587143613134093145p = gmpy2.iroot(p3, 3)[0]
i = 0
while True:q = p * 5 + iif isPrime(q):i = 0breakelse:i += 1while True:r = p * 10 + iif isPrime(r):i = 0breakelse:i += 1
phiN = (p - 1) * (q - 1) * (r - 1)
e = 2
while True:try:print(e)d = gmpy2.invert(e, phiN)m = long_to_bytes(pow(c, d, n))if b'NSSCTF' in m:print(m)breakelse:e = gmpy2.next_prime(e)except:e = gmpy2.next_prime(e)pass

automatic

题目

from Crypto.Util.number import *
import random
from secret import flag
import socketserver
import stringtable = string.ascii_letters + string.digitsclass Task(socketserver.BaseRequestHandler):def _recvall(self):BUFF_SIZE = 2048data = b''while True:part = self.request.recv(BUFF_SIZE)data += partif len(part) < BUFF_SIZE:breakreturn data.strip()def send(self, msg, newline=True):try:if newline:msg += b'\n'self.request.sendall(msg)except:passdef recv(self, prompt=b''):self.send(prompt, newline=False)return self._recvall()def proof_of_work(self):proof = (''.join([random.choice(table) for _ in range(20)])).encode()self.send(b'welcome to NSS,GL & HF')self.send(b'do you know what automated RSA solver is?')self.send(b'I don\'t know but I want you show me that')p = getPrime(128)q = getPrime(128)n = p * qe1 = getPrime(24)e2 = getPrime(24)c1 = pow(bytes_to_long(proof), e1, n)c2 = pow(bytes_to_long(proof), e2, n)self.send(b'n='+str(n).encode())self.send(b'e1=' + str(e1).encode())self.send(b'e2=' + str(e2).encode())self.send(b'c1=' + str(c1).encode())self.send(b'c2=' + str(c2).encode())XXXX = self.recv(prompt=b'[+] Plz Tell Me proof :')if len(XXXX) != 20 or XXXX != proof:return Falsereturn Truedef handle(self):proof = self.proof_of_work()if not proof:self.request.close()counts = 0for i in range(777):proof = self.proof_of_work()if proof:self.send("correct".encode())counts += 1else:self.send("incorrect".encode())if counts == 777:self.send(b'You get flag!')self.send(flag)else:self.send(b'something wrong?')self.request.close()class ThreadedServer(socketserver.ThreadingMixIn, socketserver.TCPServer):passclass ForkedServer(socketserver.ForkingMixIn, socketserver.TCPServer):passif __name__ == "__main__":HOST, PORT = '0.0.0.0', 12000print("HOST:POST " + HOST + ":" + str(PORT))server = ForkedServer((HOST, PORT), Task)server.allow_reuse_address = Trueserver.serve_forever()

exp

from pwn import *
import string
from Crypto.Util.number import *
import syssys.setrecursionlimit(1000000)def egcd(a, b):if a == 0:return b, 0, 1else:g, y, x = egcd(b % a, a)return g, x - (b // a) * y, ydef modinv(a, m):g, x, y = egcd(a, m)if g != 1:raise Exception('modular inverse does not exist')else:return x % mdef CommonMode(e1, e2, c1, c2, n):s = egcd(e1, e2)s1 = s[1]s2 = s[2]if s1 < 0:s1 = - s1c1 = modinv(c1, n)elif s2 < 0:s2 = - s2c2 = modinv(c2, n)m = (pow(c1, s1, n) * pow(c2, s2, n)) % nreturn long_to_bytes(m).decode()# 创建由大小写字母和数字组成的字典
dir = string.ascii_letters + string.digits
# 自己改环境
p = remote("112.124.34.157", 12000)for i in range(77):p.recvuntil('n=')n = int(p.recvline().strip().decode())p.recvuntil('e1=')e1 = int(p.recvline().strip().decode())p.recvuntil('e2=')e2 = int(p.recvline().strip().decode())p.recvuntil('c1=')c1 = int(p.recvline().strip().decode())p.recvuntil('c2=')c2 = int(p.recvline().strip().decode())res = CommonMode(e1, e2, c1, c2, n)p.sendlineafter('[+] Plz Tell Me proof :', res)print("i=" + str(i))
p.recvuntil('You get flag!')
print(p.recvlines(2))

建议学一下pwntools的用法

[NSSCTF 2022 Spring Recruit] Crypto wp相关推荐

  1. 2022 SWPUCTF Web+Crypto方向wp

    文章目录 2022 SWPUCTF WP web 欢迎来到web安全 easy_sql happy_rce do_not_wakeup newnew baby_pop happy_php easy_x ...

  2. DASCTF NOV X联合出题人2022年度积分榜争夺赛!Crypto Wp

    CRYPTO easy_hash 根据 e n c o d e ( ) encode() encode()函数,已知 a 1 a_1 a1​,可以求出 a 2 , a 3 a_2,a_3 a2​,a3 ...

  3. 祥云杯2020 Crypto wp

    Crypto: SimpleRSA wiener attack 利用自定义的m检验生成的d'来判断phi是否正确 e=10722954259441365070399386771014424812135 ...

  4. 2022第四届长安杯wp

    目录 背景 检材一 1. 检材1的SHA256值为 2. 分析检材1,搭建该服务器的技术员IP地址是多少?用该地址解压检材2 3. 检材1中,操作系统发行版本号为 4. 检材1系统中,网卡绑定的静态I ...

  5. 2022 Pwnhub冬季赛 WP

    2022 Pwnhub冬季赛 笔者以星盟安全团队队员的身份参与了本次比赛,在队内师傅们的共同努力下,最终取得了较为理想的成绩. 赛中,笔者AK了密码,非预期出了两道AI题,以及半道Airdrop取证相 ...

  6. 2022HNCTF---Week4 crypto wp

    文章目录 前言 random 题目 过程分析 解题代码 square 题目 过程分析 解题代码 前言 crypto很简单的(bushi random 题目 from random import * f ...

  7. 2022美亚杯个人wp

    检材文件下载链接:https://pan.baidu.com/s/1kg8FMeMaj6BIBmuvUZHA3Q?pwd=ngzs 提取码:ngzs 个人赛与团队赛下载文件解压密码:MeiyaCup2 ...

  8. [CTF]2022美团CTF WEB WP

    最终排名 easypickle 源码 import base64 import pickle from flask import Flask, session import os import ran ...

  9. 南华大学2022第五届网络安全竞赛wp

    文章目录 Web 别卷了,来听完讲故事 GET请求 Easy php UA头 万能密码 Crypto 你知道ascii码吗 JS 是个啥 base sign up easy python Misc 被 ...

最新文章

  1. eclipse 和 google拼音输入法冲突问题
  2. matplotlib可视化时间序列数据、并高亮时间序列中的指定区域(Highlight a Region of Time-Series Plot with Matplotlib)
  3. 用Scikit-learn和TensorFlow进行机器学习_1
  4. BZOJ-2761-不重复数字
  5. 01 ftp上传简单示例服务端
  6. Jetty9 源码初解(2)——IO之Connection
  7. [单选题]?php echo ceil(2.1/0.7); ?
  8. docker file 示例
  9. 1900页Python系列PPT分享四:字符串与正则表达式(109页)
  10. android super参数,Android Superuser 提权漏洞分析
  11. vue 数字上下滚动抽奖
  12. 《前端技巧》文件下载功能在苹果手机中的特殊处理
  13. 2021年顶级服务器备份软件和解决方案
  14. 3dmax坐标轴全解
  15. wr720n刷成网络打印_USB打印机通过路由共享wifi局域网打印,同网段
  16. Pygame实战之外星人入侵NO.11——设置开始按钮
  17. struts2中常用Result总结
  18. 推进BI国产化替代,永洪科技新产品性能提升200%
  19. 8.1~8.2 周末翻倍奖励——滴滴快车单
  20. python生成简单名片二维码(不带图片)

热门文章

  1. 【批处理DOS-CMD命令-汇总和小结】-外部命令-cmd下载命令、抓包命令(wget)
  2. 可用于Stable Diffusion免费的AI绘画标签生成器
  3. Linux下Linpack测试CPU性能的相关库、环境搭建部署
  4. STM32Fatfs遍历文件(C语言实现)
  5. 【国内首套H3C V7交换机实战课程-6】生成树配置与管理-王达-专题视频课程
  6. R语言计算31省份(除港澳台地区)省会城市的球面距离代码
  7. keep sb updated_keep you update 和keep you updated哪个正确?
  8. DVB开发之TS流的接收,解码与播放
  9. 如何生成IEEE论文源文件提交的高分辨率PDF?
  10. 【ZZULIOJ】1058: 求解不等式