gpt4 book ai didi

c - 如何用字符串在内存中插入空字节

转载 作者:行者123 更新时间:2023-11-30 17:27:42 27 4
gpt4 key购买 nike

我正在网上做一些挑战,我需要一些帮助

上下文:目标是读取目录中 .password 文件的内容。在这个目录中有一个二进制文件(及其源代码可用)。当我们执行这个二进制文件时,我们获得了 super 用户权限(带有 ls 的位 s)。

代码如下:

int main(int argc, char ** argv)
{
char cmd[256]= "/bin/ls -la ";
if(argc!=2)
{
printf("Usage : %s <nom de dossier>\n",argv[0]);
return 1;
}
if(strlen(argv[1])<9)
{
strcat(cmd, argv[1]);
system(cmd);
}
else
{
printf("No input larger than 8 char allowed.\n");
}
return 0;
}

所以这是基本的,我用 argv[1] 注入(inject)一个命令来 cat 这样的 .password

argv[1] = " .| cat .password"

但是if(strlen(argv[1])<9)阻止我。我想我必须注入(inject)一个空字节来诱骗 strlen。我对吗 ?我尝试使用 hexa->String 转换器(0x00 -> �?) 来做到这一点,但失败了......

感谢您的帮助。

最佳答案

您的argv[1]长度为 17 个字符,因此

if(strlen(argv[1])<9)

将会失败并转到 else部分。

您应该将值 9 增加到 18 或更多。

关于c - 如何用字符串在内存中插入空字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26318061/

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