RSA
1 | from secret import flag |
基础rsa,计算d解密即可
1 | e = 65537 |
SYC{RSA_is_easy}
共模攻击
1 | from secret import flag |
共模攻击板子题,不多说了
1 | n = |
SYC{U_can_really_attack}
inPEM
解压文件,发现给了公钥私钥文件,加密后的key.enc,以及一个mixHoyo文件夹,里面发现是Ginshen.exe。exe是一个解压程序,需要解压密码,去看rsa。
查看私钥文件,发现前半部分是缺失的,但是可以复原出dp,dq和inv_q。
查看公钥文件,没有异常。
既然已知dp,直接dp攻击即可
1 | dp=int('ba5beaf382f586bf044615f3ec8bf35e0ad0a41cecb213930a86ac35a80d90319a05aa56da311ee8435abe6317eb6d15904fc787d37b34c48daad75d2b77a41d5cec4c27cced07cbda891fefa0d9d7025023bcb865c16c000266a090640032752acce73a3358060c056723e788f42edc8e120e0f58f5e24f327fff1c56687fb1',16) |
成功获得密码
1 | \x02y,0\\\x9b\x13\xceg\x1do`\x90p\xa1q\xffg\xe1\x0f9\xbe\xad\xc3\x7f\xf1\xc2\x1bF\xd1\xcd\xf3"8\xff\xd9%nj\xa8\x8f\x11\xfb\xa0\xde\xcb\x8a\xbe\xe8\\\x8c6\x93\xb6#\xbe\xab\xdcFU;\xcf\xdc\xe9\xd7\xef!\xb8r\xc9\x82\x9eg\x95\x88o)O\x84\x1e`b\xc2\xa2\xa6\x83\xe1\x03\xc5\xb9Py\x0b\xf0\xf0l\x90\x10\x19\x93\xdf@\xd5\xc2\xd4\x06\xc6\xdf\x90\xc7\xbc\xc4{\xc9X\x98j_,o\xf3\x1b\xe6\xa5\xee\x06NO\xb8\xbaE)a\x07\x12b\xcb\x83\x16P\x8a\xa7\x950\x8c\x0c\xe5}\xcb\x85-\xe7#\xe7[-\x03\x8f\xe2\xa7\x00You_are_r1ght_bu7_Genshin_Impact_1s_@_brand_new_open_wor1d_@dventure_gam3_dev3loped_6y_miHoYo. |
exe输入密码,得到txt文件,末尾得到flag
SYC{OVvanSh3nO_Q1D0ng!}
ezRSA
1 | from secret import flag |
2024*m-2023数量级小于n,相当于已知m高位攻击
1 | from Crypto.Util.number import * |
SYC{crypto_is_very_interesting_why_dont_you_join_us}
RnoCRT
1 | import hashlib |
提示Also gcd!=1 ,找到了扩展中国剩余定理,基本是原题,看看原理改改脚本即可
1 | m=[207867980504656835313307696396607264603, 245036212212570610987366430554968489325, 270836744824069537438646110613439698666, 319275775495422875474878625752594133023, 254268823435329877199449670714528712873, 213093607196415232366564484229844568444, 246921085368773491003187313772615702950] |
SYC{6a651b7ce47b35cc1aca565028fb633fab9e35ca08e45d5ce987a6caeb500465}
X0R
1 | key = b'...' |
先异或回去获得enc
pwn的xor函数是从左往右密钥补齐的,逐个爆破出密钥即可。
1 | f1 = 4585958212176920650644941909171976689111990 |
“><0R” SYC{a_part_0f_X0R}
ncoCRT
还是扩展中国剩余定理,不过是普通一些的情况,直接脚本解密即可。
1 | def exgcd(a, b): |
SYC{wha+s_wr0n9!_CRT_bu+n0+<0mpr1me!}
LLL
1 | from Crypto.Util.number import * |
根据式子
1 | from Crypto.Util.number import * |
SYC{1e989433efffd767589e989ad0f091075c06}
Number theory
1 | m = bytes_to_long(flag) |
题目分为两部分,分别还原p和q求解rsa。
第一部分给出
1 | h0 = |
后半部分给出了
1 | n2 = p * q1 |
其中两个13位的系数很小,可以试着爆破
1 | h0 = |
SYC{492aebb6-9c16-4b1a-ac42-fc608bf6063f}
dp
1 | p,q = getPrime(512),getPrime(512) |
常规dp攻击,直接解即可
1 | c = |
SYC{welcome_to_crypto}
ecc
1 | from secret import flag |
常规ecc解密过程,求解m还原flag即可
1 | from Crypto.Util.number import * |
SYC{Ecc$is!sO@HaRd}