IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP代码执行-EVAL函数 -> 正文阅读

[PHP知识库]PHP代码执行-EVAL函数

了解

作用:这个函数的作用就是把一段字符串当作PHP语句来执行,一般情况下不建议使用容易被黑客利用
Eval函数的一般语法:eval(string $code)
比如:echo "hello world";输出的内容是“hello world”,当使用这个函数的时候eval("echo 'hello world';"); 输出的结果是相同的但是,在输出这个命运时,是以一段字符串当作PHP语句执行

使用的注意事项

  1. 参数的字符串末尾一定要有分号, 当然别忘记在命令的末尾添加上原本的分号哦,不然PHP可不认识你了。

  2. 注意单引号、双引号和反斜杠的运用,在上面的例子中没有发现吗----echo("hello world");变成了eval("echo 'hello world';");当要输出的内容需要在函数内输入的话,需要对输出的内容进行‘’,双引号也别忘记加上,还有双引号内末尾的,然后的\的话,如果参数中带有变量时,并且变量有赋值操作的话,变量前的$符号一定要有\来转义。如果没有赋值操作可以不需要。

    比如:
    $a=11;
    eval("echo$a;"); 由于a已经赋值过,所以在函数内是不需要赋值的也就可以不需要使用\来转义$. 相当于:eval("echo\$a;");

  • 注意在命令式字符串(包括分号)两边必须要有双引号或者根据需要用单引号。否则报错。

** 命令式字符串是指:字符串中包括echo、print之类的命令的时候。
**
如果参数只有一个变量则可以不用
如果含有多个参数的话
<?php$string = "beautiful";
$time = "winter";
$str = 'This is a $time $string morning!';
eval("echo \$str=\"$str\";");
?>
在这里插入图片描述

重点来了!

eval函数在命令执行的作用以及不用说了,
但是在实例使用中,并非运用仅限于此,最终的就是将你想要执行的命令如何正确执行

$code是字符串型变量,是需要执行的PHP代码。
代码不能包含打开/关闭 PHP tags。比如, ‘echo “Hi!”;’ 不能这样传入:’’。但仍然可以用合适的PHP tag来离开、重新进入PHP模式。比如 'echo "In PHP mode!"; ?>In HTML mode!

在这里插入图片描述



哇哦,这样用的嘛
说实话,确实看的我蒙蒙的-------------------------------------
拿题讲讲吧,CTFshow-WEB入门第29关就需要使用到这样的一个命令
在这里插入图片描述

可见文件过滤了flag字符,没关系,我们先遍历一下所有文件的目录
也就是上文提到的
方法一:
?c=echo "a";?><?php system('ls');


在这里插入图片描述

可以看到flag在flag.php文件中,如果直接cat flag.php的话会直接被过滤掉,可以改为include包含,然后对得到的内容base64编码,传入的目的
?c=echo "a";?><?php include($_GET['url']);&url=php://filter/read=convert.base64-encode/resource=flag.php


在这里插入图片描述



在这里插入图片描述





方法二:
?c=system('ls');
在这里插入图片描述

找到位置后由于flag被过滤,因此可以使用*代替部分字符,查看源代码
在这里插入图片描述













关于include包含,路径加密,其实也是比较繁琐的,但是作为一个知识点掌握如何使用也是必要的


get一个小知识


其实也就是下一关的知识点:system函数被过滤了怎么办可以使用:passthru()
替换在这里插入图片描述



  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:27:06  更:2021-07-11 16:27:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 8:19:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码