目录
技能展示
文章
日记
时间线
项目展示
分类
标签
Android Bash Burp C++ CS CTF DLL劫持 Docker Fastjson Fastjson2 FNV-1a FreeCMS FRP GetShell GitHub IPv6 Java JNDI John JS加密 JS逆向 K8s Kafka Kali lama-cleaner Linux mitmproxy MSF MySQL Nim Nmap NPS Office OID Payload Phar PHP phpMyAdmin POP链 PWN Pyinstaller Python RCE RSA Shellcode SNMP SQL注入 SSH SSRF Ubuntu USB Web Webshell Web安全 Windows XSS YAML Zookeeper 主机探测 代码审计 伪协议 免杀 内网 内网穿透 加密 加解密 参数 反序列化 反弹shell 命令 哈希碰撞 图像处理 域渗透 字符串逃逸 容器 密码学 密码破解 提权 数据库 文件上传 日志分析 未授权访问 权限维持 汇总 流量分析 消息队列 溯源 漏洞 漏洞分析 漏洞利用 端口扫描 编译 网络管理 资产探测 跨平台 运维 进程隐藏 逆向
目录
目录
499 字
2 分钟
RSA-dp泄露
RSA-dp泄露
原理
0x00 基本数学公式
a=k∗b+pamodb=p0x01 RSA的基本公式
1c ≡ m ^ e mod n2m ≡ c ^ d mod n3ϕ(n) = (p − 1) * (q − 1)4d * e ≡ 1 mod ϕ(n) # 乘法逆元0x02 dp是什么
1dp ≡ d mod (p − 1)0x03 推导过程
1dp ≡ d mod (p − 1)2# 两边同时乘以 e3=> dp * e = d * e mod (p - 1)4=> dp * e = d * e - k * (p - 1)5=> d * e = dp * e + k * (p - 1)6# 与下面的公式结合7d * e ≡ 1 mod ϕ(n)1# 因为:2ϕ(n) = (p − 1) * (q − 1)3# 所以可以变形:4=> d * e = 1 mod (p − 1) * (q − 1)5# 变形:6dp * e + k * (p - 1) = 1 mod (p − 1) * (q − 1)1# 结合:2dp * e + k * (p - 1) = 1 + k * (p − 1) * (q − 1)3=> dp * e = 1 + k * (p − 1) * (q − 1) - k * (p - 1)4=> dp * e = 1 + [k * (q - 1) - k] * (p - 1)5# 设 i = [k * (q - 1) - k]6=> dp * e = 1 + i * (p - 1)1dp * e = 1 + i * (p - 1)2=> dp < p - 13=> i < e4=> i ∈ (0, e)0x04 求p
1遍历 i(65537种可能),求出( p − 1 ) (p - 1) * (p − 1),得到 p 且能被 n 整除;接下来就是常规 RSA 的解法1for i in range(1, 65535):2 p = (dp * e - 1) // i + 13 if n % p == 0:4 q = n // p5 phi_n = (p - 1) * (q - 1)6 d = gmpy2.invert(e, phi_n)7 m = pow(c, d, n)8 flag = libnum.n2s(int(m)).decode()9 print(flag)10 break例题
[WUSTCTF2020] dp_leaking_1s_very_d@angerous
题目
1e = 655372n = 1568083435985787749573756968151889806821667406093028310996964920682463371987925108988184962391663390152073051021014316342831685444929845865667999964711502523821441482572367072472675061656708775063702531276953141639870840764625600954566358336507206063378521993623621208087079259138979565277809304235743432878473c = 1085420788090577746667480662354732924953437537904439660206360608074183937372586963525693456214889580948563058656031008858386725917640721571833361392435884355831044232689214394731132444938216925609604436880489945574635260999853036672436237114548415739222330512895618655997220041071343020703012373454003542578694dp = 734763139918837027274765680404546851353356952885439663987181004382601658386317353877499122276686150509151221546249750373865024485652349719427182780275825解密脚本
1import gmpy22import libnum3from Crypto.Util.number import long_to_bytes4
5e = 655376n = 1568083435985787749573756968151889806821667406093028310996964920682463371987925108988184962391663390152073051021014316342831685444929845865667999964711502523821441482572367072472675061656708775063702531276953141639870840764625600954566358336507206063378521993623621208087079259138979565277809304235743432878477c = 1085420788090577746667480662354732924953437537904439660206360608074183937372586963525693456214889580948563058656031008858386725917640721571833361392435884355831044232689214394731132444938216925609604436880489945574635260999853036672436237114548415739222330512895618655997220041071343020703012373454003542578698dp = 7347631399188370272747656804045468513533569528854396639871810043826016583863173538774991222766861505091512215462497503738650244856523497194271827802758259
10for i in range(1, e):11 p = (dp * e - 1) // i + 112 if n % p == 0:13 q = n // p14 phi = (p - 1) * (q - 1)15 d = gmpy2.invert(e, phi)16 m = pow(c, d, n)17 # print(m)18 print(long_to_bytes(m))19 # print(libnum.n2s(int(m)))20 break部分信息可能已经过时
目录
技能展示
文章
日记
时间线
项目展示
分类
标签
Android Bash Burp C++ CS CTF DLL劫持 Docker Fastjson Fastjson2 FNV-1a FreeCMS FRP GetShell GitHub IPv6 Java JNDI John JS加密 JS逆向 K8s Kafka Kali lama-cleaner Linux mitmproxy MSF MySQL Nim Nmap NPS Office OID Payload Phar PHP phpMyAdmin POP链 PWN Pyinstaller Python RCE RSA Shellcode SNMP SQL注入 SSH SSRF Ubuntu USB Web Webshell Web安全 Windows XSS YAML Zookeeper 主机探测 代码审计 伪协议 免杀 内网 内网穿透 加密 加解密 参数 反序列化 反弹shell 命令 哈希碰撞 图像处理 域渗透 字符串逃逸 容器 密码学 密码破解 提权 数据库 文件上传 日志分析 未授权访问 权限维持 汇总 流量分析 消息队列 溯源 漏洞 漏洞分析 漏洞利用 端口扫描 编译 网络管理 资产探测 跨平台 运维 进程隐藏 逆向
目录