gpt4 book ai didi

c - 缓冲区溢出将超过 0x7E 的字节添加到堆栈

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

我一直在通过一个将字符串作为参数的 c 程序来试验缓冲区溢出。然后它(我认为?不是很熟悉所讨论的漏洞)将 strcpy 调用到长度为 64 的字符串而不检查参数字符串的长度,所以超过我的 64 值的部分将覆盖堆栈的其他部分。

我相信每个有问题的字符都被转换成对应的 ASCII 十六进制字符,然后写入堆栈。然而,由于 ASCII 只能达到 7E,有人如何将 7F 和 9F 之间的任何值压入堆栈?

我知道我并不真正理解这个主题,如果有人想澄清他们的答案中究竟发生了什么,那将非常受欢迎。

最佳答案

谁说您不能为字符传递高于 0x7E 的值?

#include <stdio.h>

int main(int argc, char *argv[])
{
char *p = argv[1];
unsigned char c;

if (argc < 2) return 1;

while ((c = *p++))
{
printf("%02x\n", (unsigned int) c);
}
}

我们可以在 argv[1] 字符串中传递高于 0x7E 的字符值:

$ ./tst $(echo -ne "\xAB\xCD\xEF\xFF")
ab
cd
ef
ff
$

关于c - 缓冲区溢出将超过 0x7E 的字节添加到堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309892/

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