虽然已是 2018 年,但网上依然流传着一些「高危 PHP 函数,请一定要禁用!」的标题党文章(搜索关键字:一些需要禁用的PHP危险函数). 这些文章的内容简单直接,给出 php.ini 的 disable_functions 的配置(包含一大堆函数),说这些函数十分危险,一定要禁用,有的内容甚至和7.8年前一模一样,被开发者们奉为秘籍,薪火相传. 禁用危险函数在理论上是可以加强安全性,但这种做法就好比做饭时害怕用菜刀切菜伤到自己而改用手撕.搞安全一定要重视对入口的控制,而不是自废武功,因为禁用…
phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 危险等级:高 exec() 功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。 危险等级:高 system() 功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。 危险等级:高 chroot() 功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持…
phpinfo()功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息.危险等级:中 passthru()功能描述:允许执行一个外部程序并回显输出,类似于 exec().危险等级:高 exec()功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等).危险等级:高 system()功能描述:允许执行一个外部程序并回显输出,类似于 passthru().危险等级:高 chroot() 功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式P…
phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息. 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec(). 危险等级:高 exec() 功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等). 危险等级:高 system() 功能描述:允许执行一个外部程序并回显输出,类似于 passthru(). 危险等级:高 chroot() 功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持…
一些需要禁用的PHP危险函数(disable_functions)   有时候为了安全我们需要禁掉一些PHP危险函数,整理如下需要的朋友可以参考下 phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息. 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec(). 危险等级:高 exec() 功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等). 危险等级:高 system() 功能描述:允许执行…
测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开始>>管理工具>>服务),出现Apache2a这个服务就成功了. 然后打开我们上传的PHP大马进行测试,正常情况下的权限为administrator. 环境测试正常,开始我们今天的学习目的.系统的权限分为system.admin和user权限.前两个都拥有较高权限,因为我们需要进行降权…
测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开始>>管理工具>>服务),出现Apache2a这个服务就成功了. 然后打开我们上传的PHP大马进行测试,正常情况下的权限为administrator. 环境测试正常,开始我们今天的学习目的.系统的权限分为system.admin和user权限.前两个都拥有较高权限,因为我们需要进行降权…
代码执行的危险函数 eval() 把字符串作为php代码执行 早期php一句话木马都用这个 <?php @eval($_POST['shell']);?> assert() 检查一个断言是否为false,将字符串作为php代码执行 同样经常被用作一句话木马 <?php assert(@$_POST['shell']); ?> preg_replace() 执行正则表达式的搜索和替换 当匹配模式/e时,该函数会将$replacement作为php代码执行 preg_replace(&…
passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec(). 危险等级:高 exec() 功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等). 危险等级:高 assert() 功能描述:如果按照默认值来,在程序的运行过程中调用assert()来进行判断表达式,遇到false时程序也是会继续执行的,跟eval()类似,不过eval($code_str)只是执行符合php编码规范的$code_str.assert的用法却更详细一点. 危险等级:高…
1.PHP中代码执行的危险函数 call_user_func() 第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数. 传入call_user_func()的参数不能为引用传递 call_user_func($_GET['1'],$_GET['2']); codeexec.php?1=assert&2=phpinfo() call_user_func_array() 把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入…
记录下遇到过的PHP危险函数 0x01 escapeshellarg()与escapeshellsmd()联合 先给出官方的定义: escapeshellarg ( string $arg ) : string 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的.对于用户输入的部分参数就应该使用这个函数.shell 函数包含 exec(), system() 执行运算符 . 该函数单独使用的时候,是安全的,但是…
对于我们的程序开发来说,用户的输入是解决安全性问题的第一大入口.为什么这么说呢?不管是SQL注入.XSS还是文件上传漏洞,全部都和用户提交的输入参数有关.今天我们不讲这些问题,我们主要探讨下面对用户的输入,有一些危险的函数在未经验证的情况下是不能直接使用这些函数来进行操作的,比如: include($g); 假设这个 $g 是用户提交的内容,我们在未经验证的情况下直接使用这个参数来包含文件,我们传递的参数为 ?g=/etc/passwd ,那么服务器上所有的用户帐号信息就很可能就直接泄露了. 另…
chdir : 改变目录. dir : 目录类别类. closedir : 关闭目录 handle. opendir : 打开目录 handle. readdir : 读取目录 handle. rewinddir : 重设目录 handle. chdir 改变目录. 语法: int chdir(string directory); 返回值: 整数 函数种类: 文件存取 内容说明 本函数用来改变目前 php 执行的目录到新的 directory 目录中.若无法改变则返回 false,成功则返回 t…
Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= CREATE FUNCTION csj_csj(@id as int) RETURNS @temp table --这里返回一个自己创建的表,里面的字段根据自己的需要设 ( [id] int, [zd] varcha…
函数常见的几种表现形式: 1.一般形式(函数声明): 会进行函数的预解释,函数会进行声明和定义,在函数体前面或则后面都可以进行调用. 2.函数表达式(匿名函数): 会进行函数的预解析,函数会进行声明但是不会定义(赋值),只能在函数体后面进行调用. 3.匿名函数: 匿名函数属于函数表达式,javascript引擎将开头的function关键字当作函数声明但未进行赋值操作. 函数声明和函数表达式的区别: 一:Javascript引擎在解析javascript代码时会‘函数声明提升'(Function…
一.函数执行顺序 1.正常顺序 function f(){ alert(2); } f(); //alert 2 所有浏览器都能测试通过. 2.倒序调用 f(); //alert 2 function f(){ alert(2); } 之前一些浏览器会报undefined,不过,目前的版本大多都可以了 3.含参函数倒序 f(2); //alert 2 function f(a){ alert(a); } 目前主流浏览器一样可以正常测试通过 4.声明式函数和赋值式函数 f(); function…
register_shutdown_function — Register a function for execution on shutdown. ps:Registers a callback to be executed after script execution finishes or exit() is called. 1.脚本时常死掉,而且并不总是那么好看.我们可不想给用户显示一个致命错误,又或者一个空白页(在display_errors设为off的情况下) . PHP中有一个叫…
函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式. 匿名函数:function () {}; 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,…
jquery动画函数里面可以跟一个回调函数,表示动画结束后执行的代码 使用js监听动画结束后进行的操作: $ele.fadeIn(300,function(){...}) $ele.fadeOut(300,function(){...}) $ele.slideUpDown(300,function(){...}) $ele.fadeSlideUpDown(300,function(){...})…
PHP代码执行函数 - eval & assert & preg_replace mixed eval ( string $code ) 把字符串 $code 作为PHP代码执行. 很多常见的 webshell 都是用eval 来执行具体操作的. <?php @eval($_POST['v']);?> eval一般出现的场景是 <?php $string = '杯子'; $name = '咖啡'; $str = '这个 $string 中装有 $name.<br&g…
部分内容转载 https://www.jianshu.com/p/277294c1a9f8 https://www.cnblogs.com/yewooo00/p/7551083.html 信息泄露 1.phpinfo函数 输出 PHP 当前状态的大量信息,包含了 PHP 编译选项.启用的扩展.PHP 版本.服务器信息和环境变量(如果编译为一个模块的话).PHP环境变量.操作系统版本信息.path 变量.配置选项的本地值和主值.HTTP 头和PHP授权信息 2.scandir函数 列出指定路径中的…
#encodeing=utf-8 import requests import sys reload(sys) sys.setdefaultencoding('utf-8') payloads = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@_.') headers = { 'Cache-Control':'max-age=0','Accept':'text/html,application/xhtml…
最近在学习AngularJs的过程中,自己做了个demo,但程序运行后却发现有个地方运行不对劲,纠结了半天,也问了,也查了,但是没有一个满意的答案,所以特地贴出来,请教各位大神(先说声谢谢了!).为了更直观的说明问题,直接贴代码: <!doctype html> <html ng-app="app"> <head> <title>使用$provide自定义服务</title> <script src="http…
目录 例一 例二 补充 看一道ctf题-----[BJDCTF2020]ZJCTF,不过如此 参考链接 例一 源码: <?php preg_replace('/(.*)/ei', 'strtolower("\\1")', ${phpinfo()}); 我们可以控制第一个和第三个参数,第二个参数固定为 'strtolower("\1")' 字符串. 我们先看第二个参数中的\\1 ,\\1实际上就是 \1,而 \1 在正则表达式中有自己的含义, 反向引用 对一个正…
测试代码 public class SingleTest { public static String v = "StaticValue"; static { System.out.println("static静态变量:" + v); System.out.println("static静态块"); } { System.out.println("构造块"); } public SingleTest() { System.o…
01.安全设计Checklist 输入验证 校验跨信任边界传递的不可信数据(策略检查数据合法性,含白名单机制等)格式化字符串时,依然要检验用户输入的合法性,避免可造成系统信息泄露或者拒绝服务 禁止向Java Runtime.exec()方法传递不可信.未净化的数据(当参数中包含空格,双引号,以-或者/符号开头表示一个参数开关时,可能会导致参数注入漏洞),建议如果可以禁止JVM执行外部命令,未知漏洞的危害性会大大降低,可以大大提高JVM的安全性. 验证路径之前应该先将其标准化为实际路径(特殊的文件…
今天xshell安装thinksns-plus的laravel项目时出现了一个错误, [RuntimeException] Symlink from "/root/www.z5w.net/thinksns-plus/packages/slimkit-plus-appversion" to "/root/www.z5w.net/thinksns-plus/ven dor/slimkit/plus-appversion" failed! 提示如下,这个可能跟php函数被…
开发过程总结的漏洞: 一,,如何造成包含漏洞:在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意代码.PHP文件包含的几个危险函数:include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行.include_once():和include()功能相同,区别在于当重复调用同一文件时,程序只调用一次.require():只要程序执行就包含文件进来,发生错误…
前言: 最近一直在做学校实验室安排的项目,太惨了,没多少时间学习新知识,不过rasp还是要挤挤时间学的,先从小例子的分析开始,了解rasp的基本设计思路,后面详细阅读openrasp的源码进行学习!欢迎在学习相关知识的师傅找我交流!如本文有所错误请指出~ 例子1 https://github.com/anbai-inc/javaweb-expression  一个hook ognl.spel.MVEL表达式注入的例子 用的是asm5进行字节码修改 采用premain进行插桩,重写transfor…