代码执行详解

代码执行定义

        应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞。

代码执行的原理

        应用程序本身过滤不严, 用户可以通过请求将代码(代码字符串)注入到应用中执行。

代码执行相关函数

1、eval      //将字符串当做函数进行执行需要传入一个完整的语句必须以分号。

2、assert    //判断是否为字符串是则当成代码执行在php7.0.29之后的版本不支持动态调用

3、call_user_func()    //回调函数call_user_func这个函数可以调用其它函数,被调用的函数是call_user_func的第一个函数,被调用的函数的参数是call_user_func的第二个参数。

4、call_user_func_array    //把第一个参数作为回调函数调用, 后续参数作为回调函数的参数传入。call_user_func_array 与 call_user_func 这两个函数基本上是相似的,只是在调用传递参数时存在一些差异。

5、create_function()函数    //把用户传递的数据生成一个函数fun(),然后再执行fun() create_function内部会使用eval,将传入的字符串进行eval得到函数体,在执行该函数。

6、array_map()函数    //函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。 回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

7、array_map()函数    //函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致

8、array_filter()函数    //依次将array 数组中的每个值传递到 callback 函数。如果callback函数返回true,则array数组的当前值会被包含在返回的结果数组中。

9、preg_replace()函数    //这个函数原本是利用正则表达式替换符合条件的字符串,但是这个函数有一个功能——可执行命令。

10、uasort()函数    //函数是 PHP 中用于对关联数组(associative array)进行排序的函数。这个函数用于自定义排序规则,允许你按照自己的需求对数组元素进行排序。

11、execute()函数    //执行一个来自于其他ASP文件内部的ASP程序。当其他ASP文件内的程序被请求执行完毕之后,控制器将返回最初发出请求的原始ASP文件.

代码执行的防御

1、禁用或减少使用执行代码的函数

2、对于必须使用eval的地方,一定严格处理用户数据

3、使用addslashes()函数将参数转译,或使用黑白名单校验

4、限制Web用户的权限

5、升级插件、框架新版本

代码执行与命令执行的区别

1、涉及到的函数不同

2、执行的方式不同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值