@在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大多了