nssctf round17

 level1

基础共模攻击

# #真签到题
# from Crypto.Util.number import bytes_to_long, getPrime
# from secret import getflag
#
# e1 = getPrime(1024)
# e2 = getPrime(1024)
# n = e1 * e2
# m = bytes_to_long(getflag().encode())
# c1 = pow(m, e1, n)
# c2 = pow(m, e2, n)
# print(n)
# print(c1)
# print(c2)
# print(e1)
# print(e2)
import gmpy2
import libnumn = 22517647586235353449147432825948355885962082318127038138351524894369583539246623545565501496312996556897362735789505076324197072008392656511657262430676945685471397862981216472634785622155317188784494912316440866051402627470561626691472280850273482836308002341429493460677206562201947000047718275995355772707947408688836667011206588727438261189233517003341094758634490421007907582147392858070623641389171229435187248184443645883661560636995548332475573072064240073037558031928639832259001407585962782698021735648128101459118863015844905452823095147248865104102562991382119836061161756978764495337874807458182581421229
c1 = 1432393096266401187029059077791766305797845826173887492889260179348416733820890797101745501984437201566364579129066414005659742104885321270122634155922766503333859812540068278962999824043206496595825886026095484801291802992082454776271149083516187121160475839108002133113254134626407840182541809478892306748590016896975053434021666376203540725254480252049443975835307793528287818262102688334515632062552114342619781840154202525919769192765621085008206581226486157149883898548933475155236509073675387541466324512294079413938239828341890576923100769181401944289365386552139418728492565319685207500539721582552448971814
c2 = 13299679392897297864252207869444022461237574801991239380909482153705185317634241850084078027230394830079554676426505967970943836811048777462696506309466535820372917756458083553031417406403895116557560548183674144457502601887632495739472178857537011190162283185735114683172731936834993707871636782206418680404006299140864001776588991141011500807549645227520128216130966268810165946959810884593793452437010902774726405217517557763322690215690606067996057037379898630878638483268362526985225092000670251641184960698506349245915816808028210142606700394584541282682338561482561343076218115042099753144875658666459825545602
e1 = 155861690390761931560700906834977917646203451142415617638229284868013723431003139974975998354830978765979365632120896717380895021936387027045347260400512396388028781862427862974453223157509702913026222541667006325100878113871620322023188372501930117363623076837619478555007555970810681502521309925774889678793
e2 = 144471983652821947847253052623701746810204736865723159569786739658583884214397562204788127484897909964898113250509653721265240138487697822089282456150238116811225975640330930854549232972314642221382625614304415750165289831040623741828600283778523993251940904896081111235859249916040849697146542311990869696453
def rsa_gong_N_def(e1,e2,c1,c2,n):e1, e2, c1, c2, n=int(e1),int(e2),int(c1),int(c2),int(n)print("e1,e2:",e1,e2)print(gmpy2.gcd(e1,e2))s = gmpy2.gcdext(e1, e2)print(s)s1 = s[1]s2 = s[2]if s1 < 0:s1 = - s1c1 = gmpy2.invert(c1, n)elif s2 < 0:s2 = - s2c2 = gmpy2.invert(c2, n)m = (pow(c1,s1,n) * pow(c2 ,s2 ,n)) % nreturn int(m)m = rsa_gong_N_def(e1,e2,c1,c2,n)
print(m)
print(libnum.n2s(int(m)).decode())

level2

巅峰极客2023有类似的simplersa,但这里还给了一个p的附件,没用它,猜flag<q,直接模q

# 猜猜我是谁 猜对了直接秒出flag喔
import gmpy2
from Crypto.Util.number import bytes_to_long, getPrime, long_to_bytes# from secret import getflag
#
# p = ***
# q = getPrime(1024)
# e = 65537
# n = p * q
# m = bytes_to_long(getflag().encode())
# c=pow(m, e, n)
# print(q)
# print(c)
# #p=one of ps
e=65537
q=145721736470529261146573065574028992352505611489859183763269215489708531333597694809923949026781460438320576519639268582565188719134157402292313959218961804213310847081787824780075530751842057663327444602428455144829447776271394663729996984613471623158126083062443634493708467568220146024273763894704649472957
c=17441814714407189483380175736850663249578989775568187792928771544069162420510939242665830363276698262009780462912108642025299275146709817979705069095332726251759039923303627023610865046363171692163473939115438686877494878334016463787558794121885354719336139401336137097548305393030069499625065664884238710759260231321106291200849044147840392021931720902340003746946851806025722944795391356835342258387797980787437188976704677008092850181043891802072500430200735973581081228711070923822341261809453662427341958883142789220800541626034573952425948295446202775198692920613709157662831071515700549093766182579873408465779
#flag=NSSCTF{*}
phi=q-1
d=gmpy2.invert(e,phi)
m=pow(c,d,q)
print(long_to_bytes(m))

 贴一下某位佬的解法

f=open("C:\\Users\\lenovo\\Desktop\\ps.txt")
data = f.readlines()
f.close()
for i in range(len(data)):p=int(data[i],10)q=145721736470529261146573065574028992352505611489859183763269215489708531333597694809923949026781460438320576519639268582565188719134157402292313959218961804213310847081787824780075530751842057663327444602428455144829447776271394663729996984613471623158126083062443634493708467568220146024273763894704649472957c=17441814714407189483380175736850663249578989775568187792928771544069162420510939242665830363276698262009780462912108642025299275146709817979705069095332726251759039923303627023610865046363171692163473939115438686877494878334016463787558794121885354719336139401336137097548305393030069499625065664884238710759260231321106291200849044147840392021931720902340003746946851806025722944795391356835342258387797980787437188976704677008092850181043891802072500430200735973581081228711070923822341261809453662427341958883142789220800541626034573952425948295446202775198692920613709157662831071515700549093766182579873408465779e=65537n=p*qphi=(p-1)*(q-1)d=inverse(e,phi)m=long_to_bytes(pow(c,d,n))if b'NSSCTF{' in m:print(m)

level3

这题考察了交互,没做出来,对我来说是个新知识

题目是给了这张图片,题型是共模攻击,环境关闭了不知道怎么复现了,看群里有佬说''就pwntools recv send''然后套第一题,贴下某位佬的代码

from Crypto.Util.number import *
import gmpy2
from pwn import *
from tqdm import *def decode(n,e1,e2,c1,c2):t = gmpy2.gcd(e1,e2)if t == 1:s,x,y = gmpy2.gcdext(e1,e2)m = (pow(c1,x,n)*pow(c2,y,n))%nflag = long_to_bytes(m)return flagelse:s,x,y = gmpy2.gcdext(e1,e2)k = 0while 1:m = gmpy2.iroot((pow(c1,x,n)*pow(c2,y,n)+k*n)%n,t)if m[1]:print(long_to_bytes(m[0]))breakelse:k += 1sh = remote("IP",端口号)#这里需要666次,试了试665次打不出来
for i in trange(666):  data = sh.recvuntil(b"How d1d y0u J01n In th3 NSS t3am?\n             py?\n")n = eval(sh.recvline().decode().strip().split("=")[-1])e1 = eval(sh.recvline().decode().strip().split("=")[-1])e2 = eval(sh.recvline().decode().strip().split("=")[-1])c1 = eval(sh.recvline().decode().strip().split("=")[-1])c2 = eval(sh.recvline().decode().strip().split("=")[-1])flag = decode(n,e1,e2,c1,c2)sh.sendlineafter(b"[+] Pl Give Me flaag :",flag)
sh.interactive()
sh.recvuntil()用于从套接字中接收数据,直到遇到指定的终止字符串为止
strip() 是Python中的一个字符串方法,用于移除字符串开头和结尾的指定字符(默认为空格字符)
sh.interactive() 是一个函数,通常用于在交互式Shell中与已建立的套接字进行交互。一旦调用了这个函数,程序将等待用户输入,并将用户的输入发送到已连接的套接字中
sh = remote("IP", 端口号) 是一个函数调用,用于创建一个与指定 IP 地址和端口号相连接的远程套接字对象
split("="):按照等号字符 "=" 将字符串拆分为列表
decode():将接收到的字节数据解码为字符串

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

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

相关文章

血细胞分类项目

血细胞分类项目 数据集&#xff1a;血细胞分类数据集数据处理 dataset.py网络 net.py训练 train.py拿训练集的几张图进行预测 数据集&#xff1a;血细胞分类数据集 https://aistudio.baidu.com/datasetdetail/10278 数据处理 dataset.py from torchvision import transfor…

Codeforces Round 799 (Div. 4)

目录 A. Marathon B. All Distinct C. Where’s the Bishop? D. The Clock E. Binary Deque F. 3SUM G. 2^Sort H. Gambling A. Marathon 直接模拟 void solve() {int ans0;for(int i1;i<4;i) {cin>>a[i];if(i>1&&a[i]>a[1]) ans;}cout<&l…

webassembly003 TTS BARK.CPP

TTS task TTS&#xff08;Text-to-Speech&#xff09;任务是一种自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;其中模型的目标是将输入的文本转换为声音&#xff0c;实现自动语音合成。具体来说&#xff0c;模型需要理解输入的文本并生成对应的语音输出&#xff0…

ZYNQ:CAN外设应用存在的问题

流程 为了用ZYNQ实现CAN总线功能&#xff0c;分为多个阶段&#xff1a; 1学习小梅哥视频&#xff0c;了解zynq简单工作搭建的流程&#xff0c;比如点亮LED。 GPIO 功能 按照小梅哥的视频搭建ZYNQ-PS应用系统时&#xff0c;vitis没有出现ps7_gpio_0这个硬件。这导致vitis软件…

私有化部署pdf工具箱

功能简介 用于合并/拆分/旋转/移动PDF及其页面的完全交互式GUI。 将多个 PDF 合并到一个生成的文件中。 将 PDF 拆分为多个文件&#xff0c;并按指定的页码或将所有页面提取为单个文件。 将 PDF 页面重新组织为不同的顺序。 以 90 度为增量旋转 PDF。 删除页面。 多页布局…

24. 两两交换链表中的节点(力扣LeetCode)

文章目录 24. 两两交换链表中的节点题目描述解题思路只使用一个临时节点使用两个临时节点 24. 两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff0…

【国产MCU】-认识CH32V307及开发环境搭建

认识CH32V307及开发环境搭建 文章目录 认识CH32V307及开发环境搭建1、CH32V307介绍2、开发环境搭建3、程序固件下载1、CH32V307介绍 CH32V307是沁恒推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度…

【极数系列】Flink集成DataSource读取集合数据(07)

文章目录 01 引言02 简介概述03 基于集合读取数据3.1 集合创建数据流3.2 迭代器创建数据流3.3 给定对象创建数据流3.4 迭代并行器创建数据流3.5 基于时间间隔创建数据流3.6 自定义数据流 04 源码实战demo4.1 pom.xml依赖4.2 创建集合数据流作业4.3 运行结果日志 01 引言 源码地…

(免费分享)springboot,vue在线考试系统

springboot 在线考试系统 前后端分离 一、项目简介 基于SpringBoot的在线考试系统 二、技术实现 后台框架&#xff1a;SpringBoot&#xff0c;mybatis-plus UI界面&#xff1a;Vue、ElementUI、Axios、Node.js&#xff08;前后端分离&#xff09; 数据库&#xff1a;MySQ…

C++ 类与对象(上)

目录 本节目标 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6. 类的实例化 7.类对象模型 7.1 如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 8.this指针 8.1 thi…

HDFS Federation前世今生

一 背景 熟悉大数据的人应该都知道&#xff0c;HDFS 是一个分布式文件系统&#xff0c;它是基于谷歌的GFS实现的开源系统&#xff0c;设计目的就是提供一个高度容错性和高吞吐量的海量数据存储解决方案。在经典的HDFS架构中有2个NameNode和多个DataNode&#xff0c;如下 从上面…

备战蓝桥杯---二分(基础)

何为二分&#xff1f;形象的说&#xff0c;就是单调函数求零点。 我们先对二分查找简单的分析一下&#xff08;主要是模板及易错点&#xff09; 1.找>x的第一个位置&#xff1a; 2.找<x的第一个位置&#xff1a; …