一个PHP代码注入漏洞

PHP escapeshellarg() 与escapeshellcmd()

最近在对某产品的漏洞进行复现与发散绕过,遇到了一个将escapeshellarg()与escapeshellcmd()一起使用导致命令执行的漏洞,因此就记录一下漏洞成因以及绕过手法。

首先补充一下背景知识,在unix系统中,被单引号包裹的部分如果存在变量,则这个变量不会被解析,但是被双引号包裹的部分在执行时,bash会先将变量名解析为变量的值再使用。

PHP反序列化漏洞成因、防御、绕过

0x01 PHP反序列化漏洞成因

序列化与反序列化

所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。 –php官方文档

serialize() :返回带有变量类型和值的字符串

unserialize() :想要将已序列化的字符串变回 PHP 的值

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×