首页
社区
课程
招聘
传入flag参数是否是正确操作?

问题描述

按照老师讲解的内容,最后需要传入aurora和flag两个参数,实际实验过程如果同时传入两个参数反而错误。

问题出现的环境背景及自己尝试过哪些方法

我们先看一下extract.php文件的源代码,从$content=trim(file_get_contents($flag)); 到echo $flag;之间没再对flag变量赋值,也是说如果条件语句判断成立,echo出来的$flag内容就是我们从url中传入的内容,按照讲解内容,此时应该echo出来一个空内容,而非真正的flag。如果只传入aurora参数,通过网页显示内容,我们可以看到真正的flag,而且可以发现$flag本身的赋值是正确的flag值而非文件名。Find the source in source.zip/extract.php

 

Warning: file_get_contents(flag{EZ_extr4cT!}): failed to open stream: No such file or directory in /var/www/html/extract.php on line 7
flag{EZ_extr4cT!}

相关代码

粘贴代码文本(请勿用截图)
<?php
include("extract_flag.php");
extract($_GET);
if(isset($aurora))
{
$content=trim(file_get_contents($flag));

1
2
3
4
if($aurora==$content)
 {
    echo $flag;
}

else { echo'Oh.no'; } }?>

相关调试信息

附图或描述

你期待的结果是什么?实际看到的错误信息又是什么?

我们是否应该按照老师讲解的内容传入一个空的flag?

收藏
6条回答
mb_ujnwzygn 2023-8-27

对!
我赞同你的说法,布应该传入flag
$flag应该是一个在extract_flag.php中已经创建好的字符串变量,变量的值是题目的flag答案,然后再包含extract_flag.php这个文件,就不用再传flag的数值了
图片描述
得到的结果也说明flag不是文件,是字符串变量

回复
mb_tepsdkmf 2023-9-26

flag传入空值,会提示文件名不能为空。
Warning: file_get_contents(): Filename cannot be empty in /var/www/html/extract.php on line 7
只传入aurora才能得到结果

回复
我无敌 2023-10-4

赞同。老师讲错了,$flag本身就是我们想要拿到的flag变量,而不是一个文件名,因此不能传入$flag。

回复
troylee 2023-11-22

$flag的值是我们希望得到的flag,用file_get_contents读取时,$flag的值大概率是一个不存在的文件。
file_get_contents() 函数执行失败时,可能返回 Boolean 类型的 FALSE,也可能返回一个非布尔值(如空字符)。(This function may return Boolean false, but may also return a non-Boolean value which evaluates to false. )引用自php官网。
这样与我们传入的$aurora的值进行比较,得到($aurora==$content)等于TRUE,最后输出$flag的值。

回复
achzet 2023-12-2

学到了

回复
jemus 3天前

确实嗷,点个赞
$aurora为空值就可得到flag了

回复
《30小时教你玩转CTF》
  参与学习     466 人
  提问次数     51 个
《30小时教你玩转CTF》;顶尖讲师团队亲授,教你深入浅出学攻防;每周一、周四更新
我的问答 领取收益
0
我的提问
0
我的回答
0
学习收益