@在php curl中的作用
简单来说,就是当使用上面这个Curl方法时,使用@可以读取文件。因此在一些url参数中如果使用了这个方法(可以用是否是执行ping命令来判断),就可能存在LFI
preg_match()函数漏洞
在这个函数中,可以存在三个参数
preg_replace($pattern, $replacement, $subject)
作用:搜索subject中匹配pattern的部分, 以replacement的内容进行替换。
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
/e
可以修正符使该函数将replacement 参数当作 PHP 代码。例如
pat=/abc/e&rep=system("ls")&sub=abc
因为e
在这里是作修饰符,因此abc
必须用两个斜杠括起来(正则表达式)。
flask session伪造
flask session的构造方式是明文+SECRET_KEY+时间
,因此伪造的关键在于获取SECRET_KEY
。可以使用flask session manager工具进行伪造
/proc/self/…
这是一个特殊的目录,算是与linux内核的一个接口。如果是/proc/{pid}
这样的目录,那么这个目录下的内容则是相应进程的运行信息。
有几个比较重要的文件,可以参考下图(原文)
PHP session反序化漏洞
可以看这篇博客,其实就是在生产环境中如果对php session的读取和存储方式不一致,就会导致格式上的差异,从而导致触发反序化漏洞
但仔细一想,在真实渗透环境中应该很少有程序员会在php.ini设置好的基础上再添加其他php session处理器了吧,就当学习一下
题目的名字
有时候,题目的名字就隐藏了这道题的poc,不信可以试试这题😂
不过还是记录一下深信服的EDR RCE吧深信服 EDR终端检测响应平台RCE漏洞代码分析
一个巧妙的变量覆盖
preg_match()绕过
%0a没被禁用的情况下,是可以起到绕过的作用的。不然就是用大量字符导致preg_match()崩溃输出false。这种方法适合用在判断语句如下的情况
if(!preg_match(...))
ereg的00截断
很早之前记录过这个函数,不过不能识别数组的特性会让其返回false。今天再补充一个特性,就是当这个函数读到%00
就会截止返回null,可以用来应付下面这种情况
if(ereg(...)!==FALSE)
科学计数法
php的判断是支持科学计数法的,例如1e8,会被判断成三个字符,但是这个数字可比9999999大多了