设为首页 收藏本站
查看: 498|回复: 0

[经验分享] PHP代码执行函数总结

[复制链接]

尚未签到

发表于 2018-12-12 10:55:06 | 显示全部楼层 |阅读模式
  【转】https://www.cnblogs.com/xiaozi/p/7834367.html
  PHP中可以执行代码的函数,常用于编写一句话***,可能导致代码执行漏洞,这里对代码执行函数做一些归纳。
  常见代码执行函数,如
  eval()、assert()、preg_replace()、create_function()
  array_map()、call_user_func()、call_user_func_array(),array_filter,usort,uasort()
  文件操作函数、动态函数($a($b))
  1、eval()
  eval() 函数把字符串按照 PHP 代码来计算,如常见的一句话后门程序:
  2、assert()
   与eval类似,字符串被 assert() 当做 PHP 代码来执行,如:
  示例代码:

  3、preg_replace()
  mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
  搜索subject中匹配pattern的部分, 以replacement进行替换。
  preg_replace()函数原本是执行一个正则表达式的搜索和替换,但因为存在危险的/e修饰符,使 preg_replace() 将 replacement 参数当作 PHP 代码
  示例代码:

  4、create_function()
  create_function主要用来创建匿名函数,如果没有严格对参数传递进行过滤,***者可以构造特殊字符串传递给create_function()执行任意命令。
  代码示例:

  参考链接:
  代码安全:PHP create_function()注入命令执行漏洞
  http://www.cnseay.com/1901/
  http://lovexm.blog.运维网.com/3567383/1743442
  http://qqhack8.blog.163.com/blog/static/11414798520153795157139/
  5、array_map()
  array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。 回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
  代码示例:



  6、call_user_func()/call_user_func_array ()
  call_user_func — 把第一个参数作为回调函数调用,其余参数是回调函数的参数。
  call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数


  

  


  7、array_filter()
  array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
  依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。



  8、usort()、uasort()
  usort() 通过用户自定义的比较函数对数组进行排序。
  uasort() 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 。
  代码示例:

php环境>=5.6才能用利用方式:  
test.php?1[]=1-1&1[]=eval($_POST['x'])&2=assert
  
[POST]:x=phpinfo();
  

  
php环境>=
  


  10、动态函数
  PHP函数直接由字符串拼接
  代码示例:




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650472-1-1.html 上篇帖子: 44次课(php扩展模块装安) 下篇帖子: 企业级LNMP环境应用实践之PHP配置安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表