Oracle数据库注入之联合注入
在各类SQL注入中,联合注入是一种在正常页面上通过服务端来执行SQL语句查询的注入手段。
联合注入的过程如下:
首先对注入点判断是字符型还是整型;判断查询列数和显示位,获取所有数据库名、表名以及字段名,最后从字段中获取相应数据。
(一)判断注入点
判断注入点的方法很多,比如show.php?code=1'加单引号,show.asp?code=2-1减1;通常安全性比较高的网站会过滤特殊标点符号,并且针对减法这种访问现象进行阻拦。
下面是一个经典的方法∶
1.xxx/show.asp?code=1'and 1=1--(正常显示)
对应的SQL语句∶
select.…from table where code='1'and 1=1--and xxxx;
单引号(')匹配code='1,然后and连接,1=1恒成立,注释(--)掉后面语句。
2.xxx/show.php?code=1'and 1=2--(错误显示)
对应的SQL语句∶
select.from table where code='1'and 1=2-- and xxxx;
单引号(')匹配code='1,然后and连接,1=2恒错误,注释(- -)掉后面语句。
(二)判断数据库列数
根据某列数据做排序,四列数据判断:
id=1 order by 4--
假如在输出结果中填写5会报错,从1开始遍历能判断此表包括4个字段。
通过union将数据在前端显示,这里的数据(null)个数需和前面查询的内容一致(4个)。SQL注入中,通常会使用null占位。
-1 union select null,null,null,null from dual-
输出结果如下图所示:
然后对每个字段数据类型进行判断,通过sys_context函数查询当前用户的连接信息,并显示在第二列的数据中。
在爆数据库名后,通常需要找到用户表或者管理员表,从而获取用户名和密码进行渗透。
上一篇: “永恒之蓝”网络攻击靶机复刻(二)
下一篇: Oracle数据库注入之带外注入