您当前位置: 首页 » 二月 2017
按日期归档: 二月 2017 - 第2页

escapeshellarg()

这里说是escapeshellarg()+escapeshellcmd()缺陷更合适。escapeshellcmd()已经介绍过一次了

escapeshellarg把字符串转码为可以在 shell 命令里使用的参数

escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。

这两个函数本身是没什么问题的,但是如果放在一起用,就可能产生一些非预想的结果。

readmore

create_function()

前言

最近天好冷,论坛也有点冷清~~,写篇文章吧。打算把php中的敏感点写成个系列,前面说了宽字节注入和php反序列,今天来看看一个不算很常见的函数的锅——create_function()函数

一、函数定义

在PHP中使用create_function()创建匿名函数,seay大牛的解释很清楚,引用一下:

  1. 获取参数, 函数体;
  2. 拼凑一个”function _lambdafunc (参数) { 函数体;} “的字符串;
  3. eval;
  4. 通过_lambdafunc在函数表中找到eval后得到的函数体, 找不到就出错;
  5. 定义一个函数名:”00lambda” . count(anonymous_functions)++;
  6. 用新的函数名替换_lambdafunc;
  7. 返回新的函数。

readmore

preg_replace()

preg_replace函数的作用是对字符串进行正则处理,之前的文章提过利用preg_replace来引入单引号(浅谈审计中如何快速定位引入单引号的地方

今天在来看一下它的代码执行漏洞。

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

这段代码的含义是搜索$subject中匹配$pattern的部分,用$replacement替换。而当$pattern的第一个参数存在/e修饰符时,$replacement的值会被当成php代码来执行

readmore

浅谈审计中如何快速定位引入单引号的地方

这个问题比较多,只能想一点写一点了,以后慢慢更。

在审计中如果能快速绕过限制或者快速定位到能引入单引号的地方,那么这个地方可能就是一个完美的注入,分享一下我自己目前想到的能引入单引号的情况和方法。

readmore

escapeshellcmd()

其实算不上漏洞,只是一个小细节,ctf中可能会遇到。在研究escapeshellcmd()之前有必要看一下官方的解释


escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec()system() 函数,或者 执行操作符 之前进行转义。

反斜线()会在以下字符之前插入: #&;`|*?~<>^()[]{}$, x0AxFF 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 都会被空格代替。(译注:实际测试发现在 Windows 平台是前缀 ^ 来转义的。)


readmore