NSSCTF-Crypto靶场练习--第11-20题wp

文章目录

  • [SWPUCTF 2021 新生赛]traditional
  • [LitCTF 2023]梦想是红色的 (初级)
  • [SWPUCTF 2021 新生赛]crypto2
  • [羊城杯 2021]Bigrsa
  • [LitCTF 2023]Hex?Hex!(初级)
  • [SWPU 2020]happy
  • [AFCTF 2018]BASE
  • [安洵杯 2019]JustBase
  • [鹤城杯 2021]Crazy_Rsa_Tech
  • [SWPUCTF 2021 新生赛]crypto9

[SWPUCTF 2021 新生赛]traditional

image-20231209182310576

八卦图的每一个方位对应 01234567 转换成二进制的形式。

EXP:

_hash = {"乾":"111" , "兑":"011" , "离":"101" , "震":"001" , "巽":"110" , "坎":"010" , "艮":"100" , "坤":"000"}
text = "震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮"
enc = ""
for i in text:
    try:
        enc += ''.join(_hash[i])
    except KeyError:
        enc += ''.join(" ")
print(enc)
_flag = ''
for j in range(0 , len(enc) , 10):
    _flag += ''.join((chr((int(enc[j:j + 10] , 2)))))
print("NSSCTF{" + _flag + "}")

# 001000100 001100001 000110000 000110001 001110011 001100001 001101100 001101100
# NSSCTF{Da01sall}


[LitCTF 2023]梦想是红色的 (初级)

image-20231209183114870

特殊编码,社会主义核心价值观。

image-20231209183251994


[SWPUCTF 2021 新生赛]crypto2

RSA共模攻击

在这里插入图片描述

RSA共模攻击,俩次加密共用一个模数n。

EXP:

from Crypto.Util.number import long_to_bytes
from gmpy2 import gmpy2, invert

c1 = 100156221476910922393504870369139942732039899485715044553913743347065883159136513788649486841774544271396690778274591792200052614669235485675534653358596366535073802301361391007325520975043321423979924560272762579823233787671688669418622502663507796640233829689484044539829008058686075845762979657345727814280
c2 = 86203582128388484129915298832227259690596162850520078142152482846864345432564143608324463705492416009896246993950991615005717737886323630334871790740288140033046061512799892371429864110237909925611745163785768204802056985016447086450491884472899152778839120484475953828199840871689380584162839244393022471075
e1 = 3247473589
e2 = 3698409173
n = 103606706829811720151309965777670519601112877713318435398103278099344725459597221064867089950867125892545997503531556048610968847926307322033117328614701432100084574953706259773711412853364463950703468142791390129671097834871371125741564434710151190962389213898270025272913761067078391308880995594218009110313
gcd, s, t = gmpy2.gcdext(e1, e2)
if s < 0:
    s = -s
    c1 = invert(c1, n)
elif t < 0:
    t = -t
    c2 = invert(c2, n)
m = pow(c1, s, n) * pow(c2, t, n) % n
print(long_to_bytes(m))
# NSSCTF{xxxxx******xxxxx}

[羊城杯 2021]Bigrsa

t题目:

image-20231210140429393

考察模不互素的知识,当存在两个公钥的 N 不互素时,我们显然可以直接对这两个数求最大公因数,然后直接获得 p,q,进而获得相应的私钥。

EXP:

from Crypto.Util.number import *
from gmpy2 import *
from z3 import *

s = Solver()
c = 768896221699590111551397334346583376174312684057067400178334
e = 141730613
q, p = Ints('q p')
s.add(
    q + q * p ** 3 == 1285367317452089980789441829580397855321901891350429414413655782431779727560841427444135440068248152908241981758331600586)
s.add(q * p + q * p ** 2 == 1109691832903289208389283296592510864729403914873734836011311325874120780079555500202475594)
if s.check() == sat:
    print(s.model())
# [p = 1158310153629932205401500375817,
#  q = 827089796345539312201480770649]
p = 1158310153629932205401500375817
q = 827089796345539312201480770649
n = p * q
phi = (p-1)* (q-1)
d = invert(e,phi)
print(long_to_bytes(pow(c,d,n)))

# b'flag{happy_rsa_1}'

[LitCTF 2023]Hex?Hex!(初级)

image-20231210140628053

hex编码,解码一下

image-20231210140659276


[SWPU 2020]happy

image-20231210140733273

可以使用z3约束求解计算出p和q,之后在根据RSA的公式计算就好。

EXP:

from z3 import *
from gmpy2 import gmpy2, invert
from Crypto.Util.number import long_to_bytes
s = Solver()
p,q=Ints('p q')
s.add(q+q*p**3 == 1285367317452089980789441829580397855321901891350429414413655782431779727560841427444135440068248152908241981758331600586)
s.add(p*q+q*p**2 ==1109691832903289208389283296592510864729403914873734836011311325874120780079555500202475594)
if s.check() == sat:
    print(s.model())
n=0x989f5774c6f199031dc64d5aad7907665ea5e03cde2d74da21
e=0x872a335
c=0x7a7e031f14f6b6c3292d11a41161d2491ce8bcdc67ef1baa9e
p = 1158310153629932205401500375817
q = 827089796345539312201480770649
phi=(p-1)*(q-1)
d=invert(e,phi)
m=pow(c,d,n)
print(long_to_bytes(m))
# [p = 1158310153629932205401500375817,
# q = 827089796345539312201480770649]
#b'flag{happy_rsa_1}'

[AFCTF 2018]BASE

image-20231210142023308

循环base。

EXP:

import re, base64
s = open('C:/Users/Sciurdae/Downloads/BASE/flag_encode.txt', 'rb').read()
base16_dic = r'^[A-F0-9=]*$'
base32_dic = r'^[A-Z2-7=]*$'
base64_dic = r'^[A-Za-z0-9/+=]*$'
n= 0
while True:
    n += 1
    t = s.decode()
    if '{' in t:
        print(t)
        break
    elif re.match(base16_dic, t):
        s = base64.b16decode(s)
        print(str(n) + ' base16')
    elif re.match(base32_dic, t):
        s = base64.b32decode(s)
        print(str(n) + ' base32')
    elif re.match(base64_dic, t):
        s = base64.b64decode(s)
        print(str(n) + ' base64')

[安洵杯 2019]JustBase

image-20231210142229335

题目 表明很清楚了 Just base 只有base编码。

观察一下密文,只有英文跟!@#$%^&*() 没有数字,将文本里的符号都用0-9替换就可以解base64了。

EXP:

import base64
m = 'VGhlIGdlb@xvZ#kgb@YgdGhlIEVhcnRoJ#Mgc#VyZmFjZSBpcyBkb@!pbmF)ZWQgYnkgdGhlIHBhcnRpY#VsYXIgcHJvcGVydGllcyBvZiB#YXRlci$gUHJlc@VudCBvbiBFYXJ)aCBpbiBzb@xpZCwgbGlxdWlkLCBhbmQgZ@FzZW(!cyBzdGF)ZXMsIHdhdGVyIGlzIGV$Y@VwdGlvbmFsbHkgcmVhY#RpdmUuIEl)IGRpc#NvbHZlcywgdHJhbnNwb#J)cywgYW%kIHByZWNpcGl)YXRlcyBtYW%%IGNoZW!pY@FsIGNvbXBvdW%kcyBhbmQgaXMgY@(uc#RhbnRseSBtb@RpZnlpbmcgdGhlIGZhY@Ugb@YgdGhlIEVhcnRoLiBFdmFwb#JhdGVkIGZyb@)gdGhlIG(jZWFucywgd@F)ZXIgdmFwb#IgZm(ybXMgY@xvdWRzLCBzb@!lIG(mIHdoaWNoIGFyZSB)cmFuc#BvcnRlZCBieSB#aW%kIG(@ZXIgdGhlIGNvbnRpbmVudHMuIENvbmRlbnNhdGlvbiBmcm(tIHRoZSBjbG(!ZHMgcHJvdmlkZXMgdGhlIGVzc@VudGlhbCBhZ@VudCBvZiBjb@%)aW%lbnRhbCBlcm(zaW(uOiByYWluLlRoZSByYXRlIGF)IHdoaWNoIGEgbW(sZWN!bGUgb@Ygd@F)ZXIgcGFzc@VzIHRob#VnaCB)aGUgY#ljbGUgaXMgbm()IHJhbmRvbQpBbmQgdGhlIGZsYWcgaXM^IENURnsyMi!RV)VSVFlVSU*tUExLSkhHRkRTLUFaWENWQk%NfQ=='
c = ')!@#$%^&*('
for i in m:
    for j in range(10):
        if i == c[j]:
            m = m.replace(i,str(j))
print(base64.b64decode(m))

[鹤城杯 2021]Crazy_Rsa_Tech

低加密指数广播攻击

image-20231210164605507

分析题目信息

低加密指数广播攻击。

e = 9,n_list 和 c_list 分别都有 9组数据,满足e = k;

EXP:

from gmpy2 import *
from Crypto.Util.number import long_to_bytes as l2b
 
ns = [71189786319102608575263218254922479901008514616376166401353025325668690465852130559783959409002115897148828732231478529655075366072137059589917001875303598680931962384468363842379833044123189276199264340224973914079447846845897807085694711541719515881377391200011269924562049643835131619086349617062034608799, 92503831027754984321994282254005318198418454777812045042619263533423066848097985191386666241913483806726751133691867010696758828674382946375162423033994046273252417389169779506788545647848951018539441971140081528915876529645525880324658212147388232683347292192795975558548712504744297104487514691170935149949, 100993952830138414466948640139083231443558390127247779484027818354177479632421980458019929149817002579508423291678953554090956334137167905685261724759487245658147039684536216616744746196651390112540237050493468689520465897258378216693418610879245129435268327315158194612110422630337395790254881602124839071919, 59138293747457431012165762343997972673625934330232909935732464725128776212729547237438509546925172847581735769773563840639187946741161318153031173864953372796950422229629824699580131369991913883136821374596762214064774480548532035315344368010507644630655604478651898097886873485265848973185431559958627423847, 66827868958054485359731420968595906328820823695638132426084478524423658597714990545142120448668257273436546456116147999073797943388584861050133103137697812149742551913704341990467090049650721713913812069904136198912314243175309387952328961054617877059134151915723594900209641163321839502908705301293546584147, 120940513339890268554625391482989102665030083707530690312336379356969219966820079510946652021721814016286307318930536030308296265425674637215009052078834615196224917417698019787514831973471113022781129000531459800329018133248426080717653298100515701379374786486337920294380753805825328119757649844054966712377, 72186594495190221129349814154999705524005203343018940547856004977368023856950836974465616291478257156860734574686154136925776069045232149725101769594505766718123155028300703627531567850035682448632166309129911061492630709698934310123778699316856399909549674138453085885820110724923723830686564968967391721281, 69105037583161467265649176715175579387938714721653281201847973223975467813529036844308693237404592381480367515044829190066606146105800243199497182114398931410844901178842049915914390117503986044951461783780327749665912369177733246873697481544777183820939967036346862056795919812693669387731294595126647751951, 76194219445824867986050004226602973283400885106636660263597964027139613163638212828932901192009131346530898961165310615466747046710743013409318156266326090650584190382130795884514074647833949281109675170830565650006906028402714868781834693473191228256626654011772428115359653448111208831188721505467497494581]
cs = [62580922178008480377006528793506649089253164524883696044759651305970802215270721223149734532870729533611357047595181907404222690394917605617029675103788705320032707977225447998111744887898039756375876685711148857676502670812333076878964148863713993853526715855758799502735753454247721711366497722251078739585, 46186240819076690248235492196228128599822002268014359444368898414937734806009161030424589993541799877081745454934484263188270879142125136786221625234555265815513136730416539407710862948861531339065039071959576035606192732936477944770308784472646015244527805057990939765708793705044236665364664490419874206900, 85756449024868529058704599481168414715291172247059370174556127800630896693021701121075838517372920466708826412897794900729896389468152213884232173410022054605870785910461728567377769960823103334874807744107855490558726013068890632637193410610478514663078901021307258078678427928255699031215654693270240640198, 14388767329946097216670270960679686032536707277732968784379505904021622612991917314721678940833050736745004078559116326396233622519356703639737886289595860359630019239654690312132039876082685046329079266785042428947147658321799501605837784127004536996628492065409017175037161261039765340032473048737319069656, 1143736792108232890306863524988028098730927600066491485326214420279375304665896453544100447027809433141790331191324806205845009336228331138326163746853197990596700523328423791764843694671580875538251166864957646807184041817863314204516355683663859246677105132100377322669627893863885482167305919925159944839, 2978800921927631161807562509445310353414810029862911925227583943849942080514132963605492727604495513988707849133045851539412276254555228149742924149242124724864770049898278052042163392380895275970574317984638058768854065506927848951716677514095183559625442889028813635385408810698294574175092159389388091981, 16200944263352278316040095503540249310705602580329203494665614035841657418101517016718103326928336623132935178377208651067093136976383774189554806135146237406248538919915426183225265103769259990252162411307338473817114996409705345401251435268136647166395894099897737607312110866874944619080871831772376466376, 31551601425575677138046998360378916515711528548963089502535903329268089950335615563205720969393649713416910860593823506545030969355111753902391336139384464585775439245735448030993755229554555004154084649002801255396359097917380427525820249562148313977941413268787799534165652742114031759562268691233834820996, 25288164985739570635307839193110091356864302148147148153228604718807817833935053919412276187989509493755136905193728864674684139319708358686431424793278248263545370628718355096523088238513079652226028236137381367215156975121794485995030822902933639803569133458328681148758392333073624280222354763268512333515]
e = 9
assert len(ns) == len(cs) == e
 
def CRT(N, C):
    nmul = 1
    for i in N:
        nmul *= i
    sum = 0
    for n, c in zip(N, C):
        nresidue = nmul // n
        sum += c * nresidue * invert(nresidue, n)
    x = sum % nmul
    return x
 
x = CRT(ns, cs)
m = int(iroot(x, e)[0])
print l2b(m)


[SWPUCTF 2021 新生赛]crypto9

image-20231210164802375

一个维吉尼亚密码。

用自己的维吉尼亚密码爆破一下先,可以爆出NSS的密钥,但是flag不正确。

def vigenere_decrypt(ciphertext, key):
    plaintext = ""
    key_length = len(key)
    for i in range(len(ciphertext)):
        char = ciphertext[i]
        if char.isalpha():
            key_char = key[i % key_length]
            decrypted_char = chr((ord(char) - ord(key_char) + 26) % 26 + ord('A'))
            if char.islower():
                decrypted_char = decrypted_char.lower()
            plaintext += decrypted_char
        else:
            plaintext += char
    return plaintext


def vigenere_bruteforce(ciphertext, max_key_length):
    for key_length in range(1, max_key_length + 1):
        print(f"Trying key length {key_length}:")
        for i in range(26 ** key_length):
            key = ""
            for j in range(key_length):
                key_char = chr((i // (26 ** j)) % 26 + ord('A'))
                key += key_char
            decrypted_text = vigenere_decrypt(ciphertext, key)
            if "NSSCTF" in decrypted_text:
                print(f"Key: {key}, Decrypted Text: {decrypted_text}")


if __name__ == "__main__":
    # 用你的密文替换下面的内容
    ciphertext = "AKKPLX{qv5x0021-7n8w-wr05-x25w-7882ntu5q984}"

    # 设置最大密钥长度
    max_key_length = 3

    # 爆破
    vigenere_bruteforce(ciphertext, max_key_length)

image-20231210170302154

用附件给的脚本解密。

image-20231210170220977

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安装 DevEco Studio 后不能用本地 Node.js 打开

安装 DevEco Studio 后第一次打开时&#xff0c;不能用本地 Node.js 打开 答&#xff1a;因为本地 Node.js 文件夹名字中有空格 Node.js路径只能包含字母、数字、“。”、“_”、“-”、“:”和“V” 解决方法&#xff1a; 1.修改文件夹名称 2.重新下载 注意&#xff1a;找一…

如何使用 Explain 分析 SQL 语句?

如何使用 Explain 分析 SQL 语句&#xff1f; MySQL中EXPLAIN命令是我们分析和优化SQL语句的利器。 如何使用EXPLAIN来分析SQL语句&#xff0c;接下来有15个例子&#xff0c;一起学习呗 1. EXPLAIN的基本使用 EXPLAIN可以用于分析MySQL如何执行一个SQL查询&#xff0c;包括如…

m6A RNA甲基化MeRIP-seq测序分析实验全流程解析

甲基化RNA免疫共沉淀(MeRIP-seq/m6A-seq)实验怎么做&#xff0c;从技术原理、建库测序流程、信息分析流程和研究套路等四方面详细介绍。 一、甲基化RNA免疫共沉淀(MeRIP-seq/m6A-seq)测序技术原理 表观转录组指RNA序列不发生改变的情况下&#xff0c;由RNA上的化学修饰调节基因…

股票放量成交后,大涨的概率有多少?

很多时候&#xff0c;经常有人会感觉&#xff0c;成交量突然放大5倍以上&#xff0c;后面的股价大概率会上涨&#xff0c;很多投顾班的老师也是给大家展示这样的感觉&#xff0c;那究竟有多大比例的上涨呢&#xff1f; 【文章仅是数据分析&#xff0c;不构成任何投资建议】 一…

如何主持一场知识竞赛抢答赛

知识竞赛主持说难不难&#xff0c;说简单也不简单&#xff0c;我就从易到难介绍一下。 入门级&#xff0c;题主不用练习太多其他花哨的技巧&#xff0c;只要注意一点&#xff0c;熟悉比赛流程。知识竞赛需要给所有选手一个公平流畅的答题环境&#xff0c;所以题主自身必须非常…

FreeRTOS的任务优先级、Tick以及状态讲解(尊敬的嵌入式工程师,不妨进来喝杯茶)

任务优先级和Tick 在FreeRTOS中&#xff0c;任务的优先级和Tick是两个关键的概念&#xff0c;它们直接影响任务的调度和执行。 任务优先级 每个任务都被分配一个优先级&#xff0c;用于决定任务在系统中的调度顺序。 优先级是一个无符号整数&#xff0c;通常从0开始&#xff0…

使用大语言模型生成自动驾驶指令代码可行吗?

大语言模型最近太火了&#xff0c;大家都在各个方向上应用它。自动驾驶也是当下一个热门领域&#xff0c;两个热门领域的结合自然非常令人期待。AIGCer在读了一些相关文献后&#xff0c;感觉在自动驾驶这个热点方向上应用大语言模型&#xff0c;也将是一个很有前途的方向。 这…

设计模式篇---享元模式

文章目录 概念结构实例总结 概念 享元模式&#xff1a;运用共享技术有效地支持大量细粒度对象的复用。 当系统中出现大量相同或者相似的对象时&#xff0c;可以考虑使用享元模式。享元模式中提供了一个享元池用于存储已经创建好的对象。享元对象能做到共享的关键是区分了内部状…

Diary22-全网最全的CSS3.0讲解

CSS学习 1.认识CSS 1.1什么是CSS CSS&#xff1a;Cascading Style Sheet——层叠级联样式表 CSS&#xff1a;表现&#xff08;美化网页&#xff09; 字体&#xff1b;颜色&#xff1b;边距&#xff1b;高度&#xff1b;宽度&#xff1b;背景图片&#xff1b;网页定位&…

Nginx按指定格式记录访问日志以及利用logrotate做日志轮转

今天突然想起来一个日志的一个东西,因为拉项目无意中看到了日志文件的一些东西,现在不经常做后端了,加上其他的一些原因吧.有时候有些问题也没想太多,马马虎虎就过了,后来想想还是要记录一下这方面的处理过程吧: 一般我们作为开发人员关注的日志只是在应用程序层面的,我们称它…

springboot095学生宿舍信息的系统

springboot095学生宿舍信息的系统 源码获取&#xff1a; https://docs.qq.com/doc/DUXdsVlhIdVlsemdX

使用MfgTool烧写工具烧写自制系统

一. 简介 本文我们就来学习&#xff0c;如何将我们编译的 uboot&#xff0c;zImage&#xff08;内核镜像&#xff09;&#xff0c;xxx.dtb设备树文件&#xff0c;还有制作的根文件系统&#xff0c;这四个文件烧写到开发板中&#xff0c;最后 开发板能正常启动。 上一篇文章说…

Linux权限(用户角色+文件权限属性)

Linux权限 文章目录 Linux权限一.文件权限1.快速掌握修改权限的方法&#xff08;修改文件权限属性&#xff09;2.对比权限的有无&#xff0c;以及具体的体现3.修改权限的第二套方法&#xff08;修改用户角色&#xff09;4.文件类型&#xff08;Linux下一切皆文件&#xff09; 二…

六级高频词汇1

目录 高频词汇 参考连接 高频词汇 1. alter v. 改变&#xff0c;改动&#xff0c;变更 2. burst vi. n. 突然发生&#xff0c;爆裂 3. dispose vi. 除掉&#xff1b;处置&#xff1b;解决&#xff1b;处理(of) 4. blast n. 爆炸&#xff1b;气流 vi. 炸&#xff0c;炸掉 …

Python轴承故障诊断 (五)基于EMD-LSTM的故障分类

目录 前言 1 经验模态分解EMD的Python示例 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 2.3 故障数据的EMD分解可视化 2.4 故障数据的EMD分解预处理 3 基于EMD-LSTM的轴承故障诊断分类 3.1 训练数据、测试数据分组&#xff0c;数据分batch 3.2 定…

C++ 面向对象补充

目录 初始化列表 explicit关键字 单参数构造函数 多参数构造函数 static成员 友元 内部类(不常用) 匿名对象 初始化列表 以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个成员变量后面跟 一个放在括号中的初始值或表达式。 class Date…

头歌平台题目参考

任务描述 本关任务&#xff1a;获取从键盘输入3个数&#xff0c;要求按从大到小的顺序输出这3个数。 相关知识 程序并不会总是执行同样的处理。例如&#xff0c;按下某个键的时候执行 A 处理&#xff0c;按下其他键的时候执行 B 处理…… 像这样&#xff0c;程序通过条件判断…

回溯算法之N皇后

一 什么是回溯算法 回溯算法&#xff08;Backtracking Algorithm&#xff09;是一种用于解决组合优化问题的算法&#xff0c;它通过逐步构建候选解并进行验证&#xff0c;以寻找所有满足特定条件的解。回溯算法通常应用于在给定约束条件下枚举所有可能解的问题&#xff0c;如…

FaceBook推出新的翻译模型Seamless!可实现跨语言交流的无缝衔接!

FaceBook **&#xff08;中文名&#xff1a;脸书&#xff09;**近期发布了一个新的翻译模型 Seamless Communication&#xff0c;可实现跨语言实时"无缝"交流。 该模型可以保留跨语言的表达方式和复杂性&#xff08;翻译时保留语音中的停顿和语速&#xff0c;以及声…

优雅草蜻蜓I即时通讯·水银版私有化部署之安卓Android端编译-02

Android 项目配置 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 使用以上Android studio版本 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 下载最低sdk最低版本28 完成后就可以导入项目(项目导入不能开VPN,会导致部分三方库…