[SWPUCTF 2021 新生赛]jicao

发布于 2023-11-20  311 次阅读


基本信息

image-20231118171236687

机翻
  1. <?php: 这是 PHP 脚本的开始,它告诉服务器这行后面的内容需要用 PHP 解析器处理。
  2. highlight_file('index.php');: 这行代码调用 highlight_file 函数,该函数通常用于在 PHP 中高亮显示源代码。它将把 'index.php' 文件的内容读取进来并高亮显示。不过,需要注意的是,这个函数在 PHP 7.0 之后的版本中已经被弃用,且在 PHP 7.2 中已经被移除。
  3. include("flag.php");: 这行代码包含并执行名为 'flag.php' 的文件。这意味着 'flag.php' 文件中的代码现在也在当前脚本中运行。
  4. $id=$_POST['id'];: 这行代码从 HTTP POST 请求中获取名为 'id' 的参数,并将其值赋给变量 $id
  5. $json=json_decode($_GET['json'],true);: 这行代码从 HTTP GET 请求中获取名为 'json' 的参数,并将其值解码为 PHP 数组赋给变量 $json。第二个参数 true 表示将 JSON 对象解码为关联数组。
  6. if ($id=="wllmNB"&&$json['x']=="wllm"): 这是一个条件语句,检查 $id 是否等于 "wllmNB" 并且 $json 数组中的 'x' 键的值是否等于 "wllm"。
  7. {echo $flag;}: 如果上面的条件满足,这行代码将输出变量 $flag 的值。由于在此脚本中没有定义 $flag,我猜测它可能在 'flag.php' 文件中定义。
  8. ?>: 这是 PHP 脚本的结束标记。
人话
  1. $id 接收post请求

  2. $post 接收get请求,key为json,value为一个json数据

  3. 当\$id=wllmNB和json数据key : x获取到wllm时输出flag

解题思路

方法一:使用hackbar

image-20231118171937189

方法二:使用Python的request模块

image-20231118172101980

注意点

json数据需要使用双引号引起来

jso = '{"x":"wllm"}' # 可以解析
# jso = "{'x':'wllm'}" # 无法解析