当前位置: 首页 > article >正文

ctf.bugku-eval

题目来源:eval - Bugku CTF

访问页面,

代码解释

<?php
    include "flag.php";           //包含"flag.php"文件
    $a = @$_REQUEST['hello'];     //从请求参数'hello'中获取值并赋给变量$a。 
    eval( "var_dump($a);");       //使用eval函数对变量$a进行求值,并使用var_dump函数打印出结果。 
    show_source(__FILE__);        //使用show_source函数显示当前文件的源代码。
?>

//这段代码包含了一个PHP脚本。首先,它包含了一个名为"flag.php"的文件。然后,它定义了一个变量$a,并从请求参数'hello'中获取值。接下来,它使用eval函数对变量$a进行求值,并使用var_dump函数打印出结果。最后,它使用show_source函数显示当前文件的源代码。 
//这段代码的主要功能是根据请求参数'hello'的值,将其作为PHP代码进行求值并打印出结果。同时,它还展示了当前文件的源代码。 

eval方法

eval是一个特殊的关键字,用于执行被传入的字符串作为PHP代码。其基本语法如下:

eval(string $code);


其中$code参数是要执行的代码字符串。eval会将该字符串作为PHP代码进行解析和执行,并返回执行后的结果。下面是一个示例代码:

$code = 'echo "Hello, World!";';
eval($code);

上述代码会输出字符串"Hello, World!"。

eval关键字的灵活性使得开发人员能够在运行时动态生成和执行代码,从而具备了很高的编程灵活性。

var_dump() 

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>


//以上代码会输出
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

        根据题中出现的include函数,怀疑存在文件包含漏洞,flag 在包含的flag.php 文件;后面再看题目的eval函数得知存在代码执行的漏洞,将flag.php的信息获取传递给参数a的值进行代码执行输出flag

因此,这题的解题思路:

1、利用eval()函数可将函数中的参数当作php代码执行,
2、 可通过 file 函数是把一个文件中的内容读入到一个数组中(如本题:?hello=file('flag.php')来查读取flag.php文件内容

构造payload

http://114.67.175.224:10448/?hello=file(%27flag.php%27)

得到flag


http://www.kler.cn/news/340907.html

相关文章:

  • 髓质脊髓三叉神经核文献阅读笔记
  • 嵌入式面试——FreeRTOS篇(五) 事件标志组
  • Spring Boot Starter Parent介绍
  • 初学python python与js差异
  • windows C++-移除界面工作线程(一)
  • AutoKey:开启高效办公与生活的自动化之门
  • 如何评估和选择适合企业的非结构化数据管理工具
  • mybatis-plus转换数据库json类型数据为java对象
  • 力扣题解( 规定时间内到达终点的最小花费)
  • 【LeetCode: 134. 加油站 | 贪心算法】
  • ​el-table去除表格表头多选框或者更换为文字​
  • 【嵌入式软件-STM32】STM32简介
  • 物联网:一种有能力重塑世界的技术
  • 毕业设计选题:基于ssm+vue+uniapp的科创微应用平台小程序
  • Vue集成echarts实现统计图表
  • 【公共祖先】二叉树专题
  • Clickhouse之更新表(ReplacingMergeTree)
  • k8s各类控制器详解
  • RecBole:AttributeError: module ‘ray.tune’ has no attribute ‘report’
  • Ansible 中的 Role