ps:这个本来是作者自己写的ppt,但是直接发代码社区会拦截,所以后面涉及到部分SQL语句的直接用ppt截图来展示了
Mysql系统数据库 在MYSQL数据库的注入中,最常见利用的系统数据库,利用系统数据库配合union联合查询来获取数据库相关信息,因为系统数据库中所有信息都在这个数据库里面,比如所有数据库名、所有的表名、列名以及列名的数据库类型等。 这里主要关注MYSQL系统数据库information_schema,关注系统数据库的表columns和schema表以及tables表 SCHEMATA表:提供了关于数据库的信息 COLUMNS表:给出了表中的列信息 TABLES表:给出了关于数据库中的表的信息
SQL注入产生的原因 服务器端程序将用户输入作为查询条件,在后台直接拼接sql语句,将结果返回给客户端。这里用DVWA的SQL代码为例: 在上图中我们可以看到,在id处没有对用户提交的数据做一个过滤,如果我们提交的是 结果带入到后台进行SQL语句拼接,则造成了SQL注入。 SQL手工注入 手工判断是否存在SQL注入: order by查询 union select联合查询 mysql几个内置的函数: @@datadir 函数 作用:返回数据库的存储目录 @@version_compile_os 函数 作用:查看服务器的操作系统 database() 函数 作用:查看当前连接的数据库名称 user() 函数 作用:查看当前连接数据库的用户 version() 函数 作用:查看数据库的版本
如果想查询多个数据,但是页面本身查询的列只有两个怎么办? 1. 查询数据库中所有的表 2.查询所有数据库表的数量 3. 进一步查询DVWA里面有哪些数据表 4. 进一步查询user表里面的所有列 5. 可以看到里面有users,password列。那么我们进一步获取user,password信息 |