【ctf】命令执行漏洞(一)

命令执行漏洞原理

命令执行漏洞,就是指用户通过浏览器或其他辅助程序提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,用户可以提交恶意语句并交由服务器执行。

在操作系统中,“&、|、||”都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。
在这里插入图片描述

相关函数

eval函数:这里是引用

在这里插入图片描述

assert函数:
PHP 5assert ( mixed $assertion [, string $description ] ) : bool
PHP 7assert ( mixed $assertion [, Throwable $exception ] ) : bool
PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE。
如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。assertion 是字符串的优势是当禁用断言时它的开销会更小,并且在断言失败时消息会包含 assertion 表达式。

使用assert函数时,传入的字符串最好为函数包裹,否则可能不能执行。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

call_user_func函数:
call_user_func(callable c a l l b a c k ∗ ∗ , m i x e d ∗ ∗ callback**, mixed ** callback,mixedparameter = ?, mixed $.… = ?): mixed
第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。

在这里插入图片描述
但有许多函数不能调用
在这里插入图片描述
使用is_callable函数可以检测是否支持回调
在这里插入图片描述

call_user_func_array函数
用法与call_user_func函数类似,区别在于传入的参数的数组的形式

在这里插入图片描述

create_function函数
create_function ( string $args , string $code ):字符串
args:函数参数
code:功能代码

相当于创建一个函数的作用

在这里插入图片描述

preg_replace函数
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int & $count ]] )
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
$limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
$count: 可选,为替换执行的次数。

在这里插入图片描述
在这里插入图片描述
但如果未匹配到字符,则不会执行
在这里插入图片描述

array_map函数:
array_map(myfunction,array1,array2,array3…)
在这里插入图片描述
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
在这里插入图片描述

在这里插入图片描述
也可以直接传入数组
在这里插入图片描述

usort函数:
usort() 通过用户自定义的比较函数对数组进行排序。
在这里插入图片描述

在这里插入图片描述
使用方法一:
在这里插入图片描述
可以传入多个数组型的参数,但你的参数必须大于1,且你需要执行的语句要写在第一个参数,否则无法执行。

使用方法二:
在这里插入图片描述

uasort函数:
和usort函数类似;
在这里插入图片描述
在这里插入图片描述

php代码直接执行:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值