0

コードを変更せずに ret を呼び出せるかどうか疑問に思っていました。ご覧いただきありがとうございます。

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

    int ret() {
        return system("/bin/bash");
    }

    void overflow() {
        char buf[128];
        read(STDIN_FILENO, buf, 256);
    }

    void user() {
        gid_t gid = getegid();
        setresgid(gid, gid, gid);
    }

    int main(int argc, char** argv) {
            user();
            overflow();
    }
4

1 に答える 1

0

ここで先生があなたに求めているのは、バッファ オーバーフローです。

プログラムは STDIN から読み取るので、256 文字を超えるパイプを使用すると、割り当てを完了することができると思います。

于 2013-05-03T23:46:36.423 に答える