[NSSCTF 2022 Spring Recruit] Crypto wp
[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相关推荐
- 2022 SWPUCTF Web+Crypto方向wp
文章目录 2022 SWPUCTF WP web 欢迎来到web安全 easy_sql happy_rce do_not_wakeup newnew baby_pop happy_php easy_x ...
- 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 ...
- 祥云杯2020 Crypto wp
Crypto: SimpleRSA wiener attack 利用自定义的m检验生成的d'来判断phi是否正确 e=10722954259441365070399386771014424812135 ...
- 2022第四届长安杯wp
目录 背景 检材一 1. 检材1的SHA256值为 2. 分析检材1,搭建该服务器的技术员IP地址是多少?用该地址解压检材2 3. 检材1中,操作系统发行版本号为 4. 检材1系统中,网卡绑定的静态I ...
- 2022 Pwnhub冬季赛 WP
2022 Pwnhub冬季赛 笔者以星盟安全团队队员的身份参与了本次比赛,在队内师傅们的共同努力下,最终取得了较为理想的成绩. 赛中,笔者AK了密码,非预期出了两道AI题,以及半道Airdrop取证相 ...
- 2022HNCTF---Week4 crypto wp
文章目录 前言 random 题目 过程分析 解题代码 square 题目 过程分析 解题代码 前言 crypto很简单的(bushi random 题目 from random import * f ...
- 2022美亚杯个人wp
检材文件下载链接:https://pan.baidu.com/s/1kg8FMeMaj6BIBmuvUZHA3Q?pwd=ngzs 提取码:ngzs 个人赛与团队赛下载文件解压密码:MeiyaCup2 ...
- [CTF]2022美团CTF WEB WP
最终排名 easypickle 源码 import base64 import pickle from flask import Flask, session import os import ran ...
- 南华大学2022第五届网络安全竞赛wp
文章目录 Web 别卷了,来听完讲故事 GET请求 Easy php UA头 万能密码 Crypto 你知道ascii码吗 JS 是个啥 base sign up easy python Misc 被 ...
最新文章
- eclipse 和 google拼音输入法冲突问题
- matplotlib可视化时间序列数据、并高亮时间序列中的指定区域(Highlight a Region of Time-Series Plot with Matplotlib)
- 用Scikit-learn和TensorFlow进行机器学习_1
- BZOJ-2761-不重复数字
- 01 ftp上传简单示例服务端
- Jetty9 源码初解(2)——IO之Connection
- [单选题]?php echo ceil(2.1/0.7); ?
- docker file 示例
- 1900页Python系列PPT分享四:字符串与正则表达式(109页)
- android super参数,Android Superuser 提权漏洞分析
- vue 数字上下滚动抽奖
- 《前端技巧》文件下载功能在苹果手机中的特殊处理
- 2021年顶级服务器备份软件和解决方案
- 3dmax坐标轴全解
- wr720n刷成网络打印_USB打印机通过路由共享wifi局域网打印,同网段
- Pygame实战之外星人入侵NO.11——设置开始按钮
- struts2中常用Result总结
- 推进BI国产化替代,永洪科技新产品性能提升200%
- 8.1~8.2 周末翻倍奖励——滴滴快车单
- python生成简单名片二维码(不带图片)
热门文章
- 【批处理DOS-CMD命令-汇总和小结】-外部命令-cmd下载命令、抓包命令(wget)
- 可用于Stable Diffusion免费的AI绘画标签生成器
- Linux下Linpack测试CPU性能的相关库、环境搭建部署
- STM32Fatfs遍历文件(C语言实现)
- 【国内首套H3C V7交换机实战课程-6】生成树配置与管理-王达-专题视频课程
- R语言计算31省份(除港澳台地区)省会城市的球面距离代码
- keep sb updated_keep you update 和keep you updated哪个正确?
- DVB开发之TS流的接收,解码与播放
- 如何生成IEEE论文源文件提交的高分辨率PDF?
- 【ZZULIOJ】1058: 求解不等式