非堆叠注入集合
这里也是按照类型来说
其实考虑到的情况挺多,但是没找到或者没办法利用的就算了,这里不提二次注入
首先就是明确一个问题
非堆叠注入的话,加上通达的过滤机制,在查询语句中以下问题并不能构成注入
没办法注释,暂时闭合不了
- 字段问题
table
问题
第一种类型
直接参数传递,未经过单引号包裹的
这类注入比较简单,而且后台应该存在很多
列举几种情况
- 整型参数
in
语句order by
后的参数- 和
limit
后面的参数
影响版本:<=11.10.210616
第一种
随便举个例子,不在一一列举
第二种
第三种
第四种
当然这种基本是不可能了,因为在没有堆叠的情况下,只能在mysql 5.6或者以下版本才有的操作
第二种类型
下面这是通达的全局过滤方式
这个样子的过滤产生的问题
- 只过滤了
$_GET
,$_POST
,$_COOKIE
,存在未过滤的变量,虽然reset
了get
和post
中的数据,在11.10
版本虽然过滤了_REQUEST
,单也是get
中的参数,只是无法覆盖而已,但是原生的$_REQUEST
中的数据依然是原生数据 $_SERVER
中的变量未被过滤$_FILE
中的也没被过滤- 可以很明显的看到
is_array
的判断,就是数组中的变量都未被过滤
这里$_SERVER
可能有点玄,但是数组型的应该是存在的,不在举例,以$_REQUEST
和$_FILE
举例
第一种
$_REQUEST
中的注入问题
跟进select方法
跟进where方法,可以看到直接拼接
要是复现的话这里的菜单没有权限,添加上就可以,不在复现了
第二种
这个版本比较老一点
在<= 11.5
的时候是个未授权注入,现在是个后台注入了
代码如下
文件名存在注入
限制是不能存在(.)
漏洞复现
1 | POST /general/file_folder/swfupload.php HTTP/1.1 |
报错截图
成功截图
文件名不受通达的GPC
限制