小编Yee*_*eez的帖子

Stack Guard和Stack Smashing Protection-金丝雀,内存

我对Stack Guard和SSP保护有一些疑问。如果我正确的话,第一个问题是关于Stack Guard及其三种类型的Canary-终止符,随机和随机XOR。

  1. 我想知道,如何在x86 Linux系统上禁用Stack Guard?在我读过的某个地方,可以使用此命令进行操作,同时使用gcc'-disable-stackguard-randomization ' 进行编译,就像使用该命令启用' -enable-stackguard-randomization '一样,两者均无效。如果需要,我的gcc版本是4.8.2。

  2. 关于Stack Guard的下一个问题,何时可以启用/禁用它,如何设置,要使用哪种类型的金丝雀?我读到的内容是,默认情况下使用终结器金丝雀,对于随机性,我必须使用' -enable-stackguard-randomization ' 进行编译,但是随机XOR又如何呢?(或为空0x00000000)

  3. 现在关于SSP(ProPolice),我知道,对于随机的金丝雀,我必须使用' fstack-protector-all ' 进行编译,但是终止符如何呢?默认情况下,它与Stack Guard中的一样吗?

  4. 最后一个,如果你们中的任何一个都可以告诉我,我在哪里可以找到内存中的随机金丝雀。例如,我有这种情况-编译的C程序,例如' gcc -g example.c -o example -fstack-protector-all ',因此具有随机金丝雀。假设,每次执行后,我都能获得金丝雀的地址。因此,我有:Canary = 0x1ae3f900。从不同的论文中,我得到了一些信息,即金丝雀位于.bss段中。因此,我使用readelf获取.bss段的地址:' readelf -a ./example | grep bss '。是080456c9。在gdb中,我设置了一些断点,以获取金丝雀的地址,但是当我检查.bss地址x / 20x 0x080456c9时,我看到的只是0x00000000地址,而金丝雀却无处可寻。另外,我检查了__stack_chk_fail如果它不存在,但是结果相同,我看不到它。我从PLT / GOT获取stack_chk_fail的地址。

预先感谢您的答复和时间。

random x86 gcc protection linux-kernel

7
推荐指数
1
解决办法
2030
查看次数

C - 输出中的垃圾字符

比方说,我有两个程序--input.c&output.c我想做的就是使用execl()函数将一些"半金字塔"格式的有效载荷/字符发送到另一个.

Input.c中

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

#define SIZE 1024

int length;

int main(int argc, char *argv[])
{
    pid_t pid;
    char *target;
    //char payload[length+1];
    char payload[SIZE + 1];
    int status;
    int i = 0;

    if(argc < 2)
    {
        printf("Usage %s <length> <target>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    length = atoi(argv[1]);
    target = argv[2];

    while(i < length)
    {
        pid = fork();

        if(pid != 0)
        {
            waitpid(-1, &status, 0);
            //exit(0);
        }

        if(pid == 0)
        {
            payload[i] = 'A';
            payload[i …
Run Code Online (Sandbox Code Playgroud)

c fork character execl

6
推荐指数
1
解决办法
225
查看次数

标签 统计

c ×1

character ×1

execl ×1

fork ×1

gcc ×1

linux-kernel ×1

protection ×1

random ×1

x86 ×1