May 22, 2024

PWN入门指引

如果说Crypto需要强逻辑,Reverse需要沉下心,那PWN就可以简单理解为两点都需要 / 环境配置 / Mac: - UTM - roderick师傅的Docker法 Win: Ubuntu WSL/VMware / 上手,不要着急做题,先打基础:从 CS:APP 开始 (中文翻译:深入理解计算机系统 翻译版电子书版本) 计算机N大黑书其一
Read more
April 22, 2024

趣题分享[2] -- ISCTF 2023 -- Signin

题目附件 from Crypto.Util.number import * from secret import flag def genKey(nbits): p = getPrime(nbits) q = getPrime(nbits) N = p*p*q d = inverse(N, (p-1)*(q-1)//GCD(p-1, q-1)) return N,d def encrypt(message,N): m = bytes_to_long(flag) c = pow(m, N, N) return c nbits = 1024 m = bytes_to_long(flag) N,d = genKey(nbits) c = encrypt(m,N) print('c =', c) print('N =', N) print('d =', d) """ c = 29897791365314067508830838449733707533227957127276785142837008063510003132596050393885548439564070678838696563164574990811756434599732001622138564176327233154381380717648392357672642893142367607369679906940371540867456654151408884171467638060523066406441697453971996011548195499549200103123841556085936672833238264876038160712793697159776332101536779874757463509294968879216810485825310481778472384531442206034564488532399171243463881900578407746982324779260941957792455217641883334131366614310644607114128868153897806362954456585661855569432513785225453501792356175649676419772626548071916379318631677869452985829916084336045071072493567871623113923140668031380684940109024609167449291380675124701557542736834722898328082888430566229322840781411336263268594978558564310744076581639469210462567543585251718744340216155557606004995449505782302864725856877289388008819135023371948017425832082773421030256964953984562211638060 N = 3231913372897424708803097969843687520868057190788284975066875241636436021279559026753076528399891936983240045179193386905918743759145596242896507856007669217275515235051689758768735530529408948098860529277921046146065473333357110158008648799207873976745048714516868561754202543130629713461365314627535982379718931633528922076268531363809414255082933615667770491818402126891370106045838695484124212397783571579791558324350069782623908757815983802849109451590357380624488436968737140312471089662428308113246310588336044438265822574558816510054763215983649467009345458480077882624118620789015758507736272402998721366662352794082495441303895025585316667229865533166614969641012195668280586477033200418153345241668242651407009849656745509386158276185301334443855737552801531617549980843398648751032649895403939319648954908487619711555700124294191702406981128355348449748466449951568451135718146828444185238617155432417897711198169 d = 220908195398117048628110042133057032501548264225985823161565460390793825899523662424732910718579350524590368287207857059670558852106434615134645183432670023784725430385048028248108677670095524205518013647694485975996499747580966911259433184798952372110628624294686853944766950244209186984164963987120416687012811346656498861438432610431705868541829977481875385468143747334359481673214618931159403123892213161430602430294790913847722073762999311674428134241956293914716183107414340330449465142849402354034926378025006749405210014879947411570380433942279355488861684317611066949685697268714760755591128598654573304969 """ 思路 定义模数 $N$ 和 解密指数 $d$ 之间的关系 [公式] 解密指数 $d$ 的计算公式
Read more
April 12, 2024

Xcode 命令行工具管理

安装 Command Line Tools 版本 / xcode-select --install 或者 App Store 安装 Xcode / 显示当前生效的 Xcode 版本 / xcode-select --print-path 切换至 Xcode App Store 版本 / sudo xcode-select -s /Applications/Xcode.app/Contents/Developer 切换至 Command Line Tools 版本 / sudo xcode-select -s /Library/Developer/CommandLineTools
Read more
April 11, 2024

配置 MitMProxy

mitmproxy文档 / brew install mitmproxy # baidu_mitm.py # Demo # 导入 mitmproxy 的 http 模块 from mitmproxy import http # 请求处理函数 def request(flow: http.HTTPFlow) -> None: # 检查请求的主机是否为 'baidu.com' if "baidu.com" in flow.request.pretty_host: # 打印请求的 URL print(f"Request URL: {flow.request.url}") # 响应处理函数 def response(flow: http.HTTPFlow) -> None: # 检查请求的主机是否为 'baidu.com' if "baidu.com" in flow.request.pretty_host: # 打印响应的状态码 print(f"Response Status: {flow.response.status_code}") 浏览器配置忽略证书错误并设置代理为 127.0.0.1:8080
Read more
March 21, 2024

在 VS Code 中优化 C++ 开发环境

VS Code 默认的智能感知配置可能不够理想,无法像 CLion 那样进行变量类型的推导。为了改进这一点,尝试使用 Clangd 扩展来增强 VS Code 中的智能感知功能。既然都配置了 Clangd,那就顺便学一手 CMake 的简单配置,即配置 C++ 编译器,并使用 CMake 来构建项目。
Read more
February 2, 2024

RSA 中 e, phi 不互素的解决方法

Reference 基础 What is modular arithmetic? (article) | Khan Academy 中国剩余定理 - OI Wiki 视频/会议 论文 1111.4877.pdf 题目 hackergame2019-writeups/official/十次方根 at master · ustclug/hackergame2019-writeups · GitHub Intended Solution to Crypto Problems in NCTF 2019 | Soreat_u’s Blog 进阶 Using the CRT with RSA 代码 Python2 RSA/rth-root extraction at master · mad-jcbx/RSA · GitHub 拓展 Elements of Z/nZ - Finite Rings AMM 算法详解与应用 AMM算法简要理解(Adleman-Mander-Miller Method) 工具 factordb 讨论 Improved nth root for finite fields and integer_mods · Issue #7931 · sagemath/sage · GitHub sage/src/sage/rings/finite_rings/integer_mod.pyx at 3dd953c3aa6b5143071b6c39208199cf128c8080 · sagemath/sage · GitHub 导言 在一般情况的RSA中,求出 $\phi(N)$ 就已经接近解出明文了。这个时候我们往往只需要通过 $ed\equiv1 \pmod {\phi (N)}$ 即可求出私钥 $d$,从而求出明文。但是要直接求逆元 $d$,需要满足 $gcd(e,\phi(N))=1$,也就是 $e$ 和 $\phi(N)$ 互质的情况。如果不满足,则会大大提高难度。
Read more
January 2, 2024

强网杯2023线上赛 部分题解

Reference 怎么样用c语言求1000的阶乘? - 知乎 SpeedUp 题意: 提交 'flag' + {{ $\text{SHA256}\left(\sum_{{i=0}}^{{\lfloor \log_{10} (2^{27}!) \rfloor}} \left( \left\lfloor \frac{{2^{27}!}}{{10^i}} \right\rfloor \mod 10 \right)\right)$ }} + '}' / 上面这个式子让 GPT 写的 (图一乐,而且这么求 number length 慢的要死(慢过 str(number).__len__(),而实际上是可以 log 巴拉巴拉求的,忘了复杂度了,总之是可以更快,而且实际上也不用求长度,见最后的代码))
Read more
December 31, 2023

快速幂 与 矩阵快速幂

因为一些事情得重新拾起算法了 / Reference(Aka thanks)(可能"Reference"在这里的用法不太对,欢迎提醒我来纠正) Wiki 时间复杂度 - 维基百科,自由的百科全书 快速幂 - OI Wiki 基础 [[Binary Exponentiation]] [[Linear Algebra|矩阵乘法]] 视频 509 Luogu P3390【模板】矩阵快速幂 bilibili 题目 P1226 【模板】快速幂 - 洛谷 | 计算机科学教育新生态 P3390 【模板】矩阵快速幂 - 洛谷 | 计算机科学教育新生态 讨论(想法) 似乎还可以通过剪枝优化,下次() 关于快速幂的名字笔者并无好感,更喜欢称其为“二进制求幂”,非常直观 把基础拿出来讲 – 矩阵乘法 矩阵乘法:
Read more
December 29, 2023

MIFARE Classic EV1 1K Crad 探索、复制、与解密

MIFARE Classic EV1 代表了 MIFARE Classic 产品系列的最高演进阶段,继承了所有以往版本的优良特性。它提供 1K 和 4K 内存版本,分别满足不同应用需求 / 👆🏻来自 MIFARE官网 / 介绍中的 1k 和 4k 为内存容量,比较常见的为 1k 版本
Read more
December 21, 2023

SageMath 对于 CTF Crypto 的使用

SageMath 版本信息 / > sage ┌────────────────────────────────────────────────────────────────────┐ │ SageMath version 10.1.beta3, Release Date: 2023-06-11 │ │ Using Python 3.11.1. Type "help()" for help. │ └────────────────────────────────────────────────────────────────────┘ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Warning: this is a prerelease version, and it may be unstable. ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ sage: 此前对 $x$ 开 $n$ 次方, 常用 pow(x, 1/n), 但对于结果不是整数时就得用 gmpy2.iroot(x, n), 而我又不喜欢使用第三方库, 现在对此问题有了以下解决方案 Sage
Read more