gpt4 book ai didi

c - 读取文件时 _IO_ getc 出现段错误

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

我正在为我的学校建立一个基本的 CTF,挑战之一是简单地分析二进制文件的 ASM (x86),弄清楚它是如何工作的,然后破解它。这个很简单:向其推送 37 个参数,您将升级为“标志”用户,该用户读取目录中的标志,并获得积分。

但是由于某种原因,当我读取标志时,我遇到了段错误。

代码如下:

void readflag()
{
setgid(1401);
char ch;
FILE *fp;
fp=fopen("argcimapirate.flag", "r");
while( ( ch = fgetc(fp) ) != EOF )
printf("%c",ch);
fclose(fp);
}

int main(int argc, char* argv[])
{
printf("ARRRRRRR!\n");
if (argc == 37)
{
printf("Shiver me timbers...\n");
readflag();
}
return 0;
}

此外,这是 ls -l 的输出,用于查看权限。

-r-sr-s--- 1 argcimapirate argcimapirate 8811 Jul 13 15:58 argcimapirate
-r-------- 1 root root 335 Jul 13 15:58 argcimapirate.c
-r--r----- 1 flag flag 17 Jul 11 21:12 argcimapirate.flag

有什么想法请告诉我。谢谢!

最佳答案

我已经解决了,伙计们。

事实证明,标志用户需要拥有该文件,以便 setuid/setgid 升级到用户可以读取标志拥有的文件的程度。

关于c - 读取文件时 _IO_ getc 出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726753/

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