第十九届全国大学生信息安全竞赛 Crypto WriteUp
第十九届全国大学生信息安全竞赛 Crypto WriteUp
ECDSA
#!/usr/bin/env python3 |
非预期解,题目中直接给出了私钥的生成方式,直接运行就能得到私钥,逆天
digest_int = int.from_bytes(sha512(b"Welcome to this challenge!").digest(), "big") |
题目需要交的flag是私钥的MD5值,需要注意的是这里要交的是md5(priv_int)而非md5(priv_bytes)
from hashlib import sha512,md5 |
只能说浪费了一个小时看nonce函数和加密过程,我服了
EzFlag
int __cdecl main(int argc, const char **argv, const char **envp) |
上面这个是main函数,其中关键是v9 = f(v11)处理,下面是f函数,实现的是一个模16的斐波那契数列,而模上的斐波那契数列是有周期性的。可以找到K的值为012ab9c3478d56ef
__int64 __fastcall f(unsigned __int64 a1) |
代码逻辑很简单,直接写解题脚本
|
这里有个大坑,用Python默认的高精度整数掩盖了溢出,而 C++ 的 uint64_t 自然产生的溢出改变了 v11 % 24 的结果。所以如果没考虑到溢出的问题,Python跑出的答案后半段是错误。
RSA_NestingDoll
scr.py文件
from Crypto.Util.number import * |
output.txt
[+] inner RSA modulus = 16141229822582999941795528434053604024130834376743380417543848154510567941426284503974843508505293632858944676904777719167211264225017879544879766461905421764911145115313698529148118556481569662427943129906246669392285465962009760415398277861235401144473728421924300182818519451863668543279964773812681294700932779276119980976088388578080667457572761731749115242478798767995746571783659904107470270861418250270529189065684265364754871076595202944616294213418165898411332609375456093386942710433731450591144173543437880652898520275020008888364820928962186107055633582315448537508963579549702813766809204496344017389879 |
GPT-5.2直接一把出,只能说国内大模型还是差一点
import math |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 dawn1ight 的孤岛!
评论





