个人学习笔记:命令执行

本文详细介绍了PHP中常见的代码执行漏洞函数如eval和assert,以及如何通过system、exec、passthru、popen和proc_open等执行系统命令。同时,对比了Linux和Windows下的管道符使用差异。
摘要由CSDN通过智能技术生成
代码执行漏洞常见函数

eval : 将字符串当做php去执行

assert   : assert(mixed $assertion, Throwable $exception = ?): bool

如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。

preg_replace() , call_user_func() , call_user_func_array() , array_map()

命令执行

system():执行外部程序并输出资料

 exec()与shell_exec():exec()与shell_exec()相似,都可以执行系统命令,不同的是返回结果不一样,前者返回最后一行,后者返回全部信息

passthru():passthru ()只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。输入/输出—

popen():popen ()函数打开一个进程管道来执行给定的命令,返回一个文件句柄

proc_open():类似popen() 函数, 但是 proc_open() 提供了更加强大的控制程序执行的能力

常见管道符   

 window
     1、”|“:直接执行后面的语句(无论前面语句的对错 )
     2、”||“:如果前面的语句执行失败,则执行后面的语句,前面语句是假才行
     3、”&“:两条命令都执行,前面的语句可正可假
     4、”&&“:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条数据都执行,前面数据只能为真
 linux
     1、”;“:执行完前面的语句再执行后面的语句
      2、”|“: 显示后面语句的执行结果
      3、”||“:前面语句出错时,执行后面语句
      4、”&“:两条命令都执行
      5、”&&":如果前面的语句为假则直接出错,也不执行后面语句,前面语句为真则两条命令都执行,前面语句只能为真

  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值