bash:warning:忽略输入中的空字节

时间:2018-05-02 20:05:51

标签: c bash string-formatting exploit

我最近编写了一个易受格式字符串漏洞影响的小程序。这是源代码(从书中复制):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
    char text[1024];
    static int test_val = -72;
    strcpy(text, argv[1]);
    printf("The right way to print user-controlled input:\n");
    printf("%s", text);
    printf("\nThe wrong way to print user-controlled input:\n");
    printf(text);
    printf("\n");

    printf("[*] test_val @ 0x%08x = %d 0x%08x\n", &test_val, test_val, test_val);
}

我想更改test_val变量的值,该变量具有以下地址:0x0040202c。 所以当我通过bash终端传递参数时:

./vuln "`python -c "print 'AAAA' + '\x2c\x20\x40\x00' + '%x ' * 5"`"

我得到以下输出

bash: warning: command substitution: ignored null byte in input
The right way to print user-controlled input:
AAAA, @%x %x %x %x %x 
The wrong way to print user-controlled input:
AAAA, @bfffeed0 bfffef1c 4005f7 41414141 2540202c 
[*] test_val @ 0x0040202c = -72 0xffffffb8

结果我在内存中找到了错误的地址(0x2540202c而不是0x0040202c)。

现在我的问题是:如何生成前导0并将它们作为我的程序的参数?

0 个答案:

没有答案