目录
技能展示
文章
日记
时间线
项目展示
分类
标签
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 命令 哈希碰撞 图像处理 域渗透 字符串逃逸 容器 密码学 密码破解 提权 数据库 文件上传 日志分析 未授权访问 权限维持 汇总 流量分析 消息队列 溯源 漏洞 漏洞分析 漏洞利用 端口扫描 编译 网络管理 资产探测 跨平台 运维 进程隐藏 逆向
目录
目录
275 字
1 分钟
RSA低加密指数攻击
RSA低加密指数
加密指数指的是e,e一般选取65535,当e很小,可直接破解。
这类攻击在CTF题中,一般是 e=3

出题脚本
1import libnum2import gmpy23
4# 生成随机素数5p = libnum.generate_prime(1024)6q = libnum.generate_prime(1024)7e = 38m = "flag{20d6e2da95dcc1fa5f5432a436c4be18}"9# 字符串转数字10m = libnum.s2n(m)11n = p * q12phi_n = (p - 1) * (q - 1)13# 求逆元14d = gmpy2.invert(e, phi_n) # 有时候会产生报错,原因是 m 的 e 次方大于 n,产生了 kn,此时用解题脚本解出来的 k 大于 015c = pow(m, e, n)16
17print("n =", n)18print("e =", e)19print("c =", c)1n = 231053295313918130398570387517596474217018791621575864440595687947569478468456197112576724231380728543681914739414084906750419105162202872687384191970855455936406900428510389584590826360275030201451210677436210573191576685729375556179918207696443567933701449132546931678434476435205689185030145477074238474990249347324549396040708843755338139634107549142552285235312001760940053903326084510729839438697569486809945808886061691821165411748207436470002514389310262190134432955698891752389772623001180772158560770476258503862540361557062636262714979063748371880165653851172082260992068545541800904815295580027963755314512e = 33c = 22173447507982949373440501175138317610105473517814575759457141766286794126504633294234669550268044399317656271118568881021332348369140068180238399943422830231427029931826653444453257342990474092233543389488631718467806742449257243340911537016978649186950505072474152830703091Traceback (most recent call last):2 File "D:\Tools\Jetbrains\Pycharm\PyCharm_workspace\PyCharm_workspace\CTF\crypto_demo\低加密指数攻击\出题.py", line 20, in <module>3 d = gmpy2.invert(e, phi_n) # 有时候会产生报错,原因是 m 的 e 次方大于 n,产生了 kn4ZeroDivisionError: invert() no inverse exists解题脚本
1import gmpy22import libnum3
4
5def decode(c, e, n):6 k = 07 while True:8 mm = c + k * n9 result, flag = gmpy2.iroot(mm, e)10 if flag:11 # print(k)12 return result13 k += 114
15
16n = 2310532953139181303985703875175964742170187916215758644405956879475694784684561971125767242313807285436819147394140849067504191051622028726873841919708554559364069004285103895845908263602750302014512106774362105731915766857293755561799182076964435679337014491325469316784344764352056891850301454770742384749902493473245493960407088437553381396341075491425522852353120017609400539033260845107298394386975694868099458088860616918211654117482074364700025143893102621901344329556988917523897726230011807721585607704762585038625403615570626362627149790637483718801656538511720822609920685455418009048152955800279637553145117e = 318c = 221734475079829493734405011751383176101054735178145757594571417662867941265046332942346695502680443993176562711185688810213323483691400681802383999434228302314270299318266534444532573429904740922335433894886317184678067424492572433409115370169786491869505050724741528307030919
20m = decode(c, e, n)21# print(m)22print(libnum.n2s(int(m)))1b'flag{20d6e2da95dcc1fa5f5432a436c4be18}'部分信息可能已经过时
目录
技能展示
文章
日记
时间线
项目展示
分类
标签
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 命令 哈希碰撞 图像处理 域渗透 字符串逃逸 容器 密码学 密码破解 提权 数据库 文件上传 日志分析 未授权访问 权限维持 汇总 流量分析 消息队列 溯源 漏洞 漏洞分析 漏洞利用 端口扫描 编译 网络管理 资产探测 跨平台 运维 进程隐藏 逆向
目录