CTF刷题第二周


这周主要做了一些 crypto题,学到了rsa算法,下周准备做些web题。

web

[NCTF 2018]签到题

f12在响应头里找到

crypto

[SWPUCTF 2021 新生赛]crypto4

rsa已知e,n,c,求m
先把n分解

c = 10227915341268619536932290456122384969242151167487654201363877568935534996454863939953106193665663567559506242151019201314446286458150141991211233219320700112533775367958964780047682920839507351492644735811096995884754664899221842470772096509258104067131614630939533042322095150722344048082688772981180270243
p = 7221289171488727827673517139597844534869368289455419695964957239047692699919030405800116133805855968123601433247022090070114331842771417566928809956044421
q = 7221289171488727827673517139597844534869368289455419695964957239047692699919030405800116133805855968123601433247022090070114331842771417566928809956045093
e = 0x10001
phi=(p - 1) * (q - 1)
d = gmpy2.invert(e, phi)
n = p * q
m = powmod(c, d, n)
print(long_to_bytes(m))
b'NSSCTF{no_why}'

[SWPUCTF 2021 新生赛]crypto6

base解码

https://ctf.bugku.com/tools

[SWPUCTF 2021 新生赛]crypto7

MD5解密

https://www.cmd5.com/

[SWPUCTF 2021 新生赛]crypto8

UUENCODE是将二进制文件转换为文本文件的过程,转换后的文件可以通过纯文本e-mail进行传输,在接收方对该文件进行uudecode,即将其转换为初始的二进制文件。
uuencode在线解码网站

http://www.metools.info/master/uuencode158.html

[SWPUCTF 2021 新生赛]crypto9

AKKPLX{qv5x0021-7n8w-wr05-x25w-7882ntu5q984}
脚本给你了,去解吧

letter_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'  # 字母表


# 根据输入的key生成key列表
def Get_KeyList(key):
    key_list = []
    for ch in key:
        key_list.append(ord(ch.upper()) - 65)
    return key_list


# 加密函数
def Encrypt(plaintext, key_list):
    ciphertext = ""

    i = 0
    for ch in plaintext:  # 遍历明文
        if 0 == i % len(key_list):
            i = 0
        if ch.isalpha():  # 明文是否为字母,如果是,则判断大小写,分别进行加密
            if ch.isupper():
                ciphertext += letter_list[(ord(ch) - 65 + key_list[i]) % 26]
                i += 1
            else:
                ciphertext += letter_list[(ord(ch) - 97 + key_list[i]) % 26].lower()
                i += 1
        else:  # 如果密文不为字母,直接添加到密文字符串里
            ciphertext += ch
    return ciphertext


# 解密函数
def Decrypt(ciphertext, key):
    plaintext = ""

    i = 0
    for ch in ciphertext:  # 遍历密文
        if 0 == i % len(key_list):
            i = 0
        if ch.isalpha():  # 密文为否为字母,如果是,则判断大小写,分别进行解密
            if ch.isupper():
                plaintext += letter_list[(ord(ch) - 65 - key_list[i]) % 26]
                i += 1
            else:
                plaintext += letter_list[(ord(ch) - 97 - key_list[i]) % 26].lower()
                i += 1
        else:  # 如果密文不为字母,直接添加到明文字符串里
            plaintext += ch
    return plaintext


if __name__ == '__main__':
    print("加密请按D,解密请按E:")
    user_input = input();
    while (user_input != 'D' and user_input != 'E'):  # 输入合法性判断
        print("输入有误!请重新输入:")
        user_input = input()

    print("请输入密钥:")
    key = input()
    while (False == key.isalpha()):  # 输入合法性判断
        print("输入有误!密钥为字母,请重新输入:")
        key = input()

    key_list = Get_KeyList(key)

    if user_input == 'D':
        # 加密
        print("请输入明文:")
        plaintext = input()
        ciphertext = Encrypt(plaintext, key_list)
        print("密文为:\n%s" % ciphertext)
    else:
        # 解密
        print("请输入密文:")
        ciphertext = input()
        plaintext = Decrypt(ciphertext, key_list)
        print("明文为:\n%s" % plaintext)

一开始没看懂,百度后发现是维吉尼亚。
根据NSSCTF可以得到秘钥为NSS
在这里插入图片描述
维吉尼亚解密网站https://ctf.bugku.com/tool/vigenere
在这里插入图片描述

[SWPUCTF 2021 新生赛]crypto10

Rot13解码

[SWPUCTF 2021 新生赛]ez_caesar

先base64再caesar5

[鹤城杯 2021]A_CRYPTO

[强网拟态 2021]拟态签到题

base64

[鹤城杯 2021]easy_crypto

社会主义价值观解码

[SWPUCTF 2021 新生赛]pigpig

猪圈密码

[SWPUCTF 2021 新生赛]ez_rsa

payload

import gmpy2

p = 1325465431
q = 152317153
e = 65537
phi = (p - 1) * (q - 1)
d = gmpy2.invert(e, phi)

print(d)

在这里插入图片描述

NSSCTF{08bb8fb628da85923e5734a75ac19ffe}

[NSSCTF 2022 Spring Recruit]Vigenere

维吉尼亚在线网站https://www.guballa.de/vigenere-solver

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值