【问题标题】:How do I send a C program's string to an su password prompt?如何将 C 程序的字符串发送到 su 密码提示符?
【发布时间】:2014-08-11 16:42:25
【问题描述】:

我已将 ubuntu 的默认 root 密码更改为:

sudo passwd

现在,我正在设计一个 C 程序来暴力破解此密码。我正在使用system() 打电话给su 但是su直接在终端提示输入密码……我想自动化这个过程,自动输入密码…… 我当前的代码:

#include <stdlib.h>
main()
{
    system("su");
}

但这要求输入密码...我想在程序中自动指定密码,以便su 不要求输入密码。有什么想法吗??????

【问题讨论】:

  • expect 干得好
  • 你可以使用popen from GNU libc之类的东西。
  • 我相信popen 或输入重定向不会起作用,因为我猜su 会读取/dev/tty
  • expect怎么用???
  • 谁能给我详细的步骤???

标签: c system su


【解决方案1】:

对于初学者,您可能以错误的方式处理此问题。在 Linux/Unix 系统上破解超级用户帐户的正确方法是暴力破解 /etc/passwd 中的哈希值。

但是,如果您想使用系统命令执行此操作,您可以使用 sudo -S 并将密码通过管道传输到 STDIN。

这不适用于 su 的原因是这样做是不允许的,因为它本质上是不安全和危险的,因此 su 甚至不使用 STDIN。

【讨论】:

  • 没有人在 /etc/passwd 中存储哈希值了。通常要在 Linux 上读取 /etc/shadow,您必须是 root 或在影子组中。
【解决方案2】:

使用“sucrack”。

Su 尝试强制使用 TTY。简化的 TTY 表示“在‘电传终端’上的实际用户”,而不是脚本。但话又说回来,它的所有软件都可以模拟。 sucrack crates 一个“PTY”,一个(再次简化的)“伪电传终端”,看起来与软件 (su) 相同。

长话短说,它可以使用魔法输入密码并告诉你是否找到密码。

Sucrack 可作为 ubuntu 软件包使用,它需要 root 才能安装(您没有)。所以另一种方法是在另一个系统上编译一个静态版本的 sucrack 并上传到服务器。这是可行的。黑客一直在这样做;)

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 2017-03-27
    • 2020-11-30
    • 2016-05-21
    • 2010-10-13
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多