作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的学校建立一个基本的 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/
我正在为我的学校建立一个基本的 CTF,挑战之一是简单地分析二进制文件的 ASM (x86),弄清楚它是如何工作的,然后破解它。这个很简单:向其推送 37 个参数,您将升级为“标志”用户,该用户读取目
我是一名优秀的程序员,十分优秀!