前面猜测数据库的数据库名,表名,列名的方法是访问mysql的information_schema数据库,通过联合查询(union)获取信息。
但是,必须使用mysql数据库的root账号才有权限访问information_schema数据库,而且union、order by等语句的执行,也需要root权限。
当注入的系统的数据库使用普通用户进行操作,将导致我们无法访问infromation_schema,无法进行联合查询,此时,又该怎样获取数据库的数据库名、表名和列名等呢?
这篇博客将对此进行讲解。
采用暴力破解的方式,需要使用burp suite。
1. 猜列名
这里用到判断列名是否为空的sql语句
' and column_name is null--
sql语句拼接后为:
select firstname, surname from users where id='' and column_name is null-- '
我们可以看到后台数据库会去判断列名为column_name的列是否为空。
这时候,如果column_name列存在,不管是否为空,数据库不会报错,如果column_name列不存在,则数据库会报如下错误: