Ⅰ 数据库管理方式
mysql里面有内置的管理用户,其中root就是默认数据库管理员用户,网站上面的数据库都在mysql中,由root或一对一用户去管理。
1、数据库root(自带默认)统一管理
每个网站的数据库都由root用户统一管理。
1 |
|
2、数据库一对一管理(不同用户)【推荐】
自己的网站单独创建数据库用户去管理自己的数据库
1 |
|
目的:获取数据
肯定可以一步步得到信息
Ⅱ SQL注入
MYSQL注入思路:(目的获取当前web权限)
1、判断常见四个信息(系统,用户,数据库名,版本)
2、根据四个信息去选择方案
root用户:先测试读写,后测试获取数据
非root用户:直接测试获取数据
2.1ACCESS SQLMAP
access sqlmap爆破依赖字典,不一定能猜到表名列名。
2.2 SQL注入原理
接受的参数值未进行过滤直接带入SQL查询的操作,就是SQL注入产生的原理。
攻击:利用SQL语句执行你想要的东西(SQL语句能干嘛,注入就能干嘛)
SQL语句能干嘛 = SQL语句由谁决定 => 数据库类型决定 (为什么mysql注入 oracle注入叫法原因)
2.3 PHP-MYSQL-SQL
常规查询
1、数据库版本-看是否符合information_schema查询-version():mysql5.0以上
2、数据库用户-看是否符合ROOT型注入攻击-user():是否可跨库查询
3、当前操作系统-看是否支持大小写或文件路径选择-@@version_compile_os
4、数据库名字-为后期猜解指定数据库下的表,列做准备-database()
2.2.1 information_schema
MYSQL5.0
以上版本:自带的数据库名information_schema
information_schema
:存储数据库下的数据库名及表名,列名信息的数据库
information_schema.schemata
:记录数据库名信息的表
information_schema.tables
:记录表名信息的表
information_schema.columns
:记录列名信息表
schema_name:information_schema.schemata
记录数据库名信息的列名值
table_schema:information_schema.tables
记录数据库名的列名值
table_name:information_schema.tables
记录表名的列名值
column_name:information_schema.columns
记录列名的列名值
2.2.2 MYSQL
注入查询含义 - 依赖information_schema
1、order by {阿拉伯数字} :查询一共有几列列名;
2、union select 1,2,3,4,5,6 :看页面回显的数字,可以将其替换成所需目标信息(版本号、数据库名、操作系统等等);
3、verson()
、database()
、user()
、@@version_complie_os
;
4、group_concat()
:拼接字符串。将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
4.1、group_concat()
语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] ) 中括号可选
4.2、MySQL中concat()、concat_ws()、group_concat()函数使用技巧与心得:https://zhuanlan.zhihu.com/p/257399676
5、from information_schema.tables where table_schema='demo01'
固定数据库名(前面查到的datebase()
);
6、from information_schema.columns where table_name='admin'
固定表名(5步骤查到了)
7、limit:
1 |
|
2.4 PHP-MYSQL-SQL
跨库查询(第一种数据库管理方式root导致)
2.4.1 跨库查询概念
含义:通过B网站的注入点获取A网站的账号密码
影响条件:当前数据库ROOT用户权限
测试不同数据库用户:root demo
2.4.2跨库示例
1 |
|
解决:单引号过滤绕过方式
SQL注入语句中用单引号就不要编码,编码就不用单引号(路径,表名,数据库名等)
2.5文件读写(已少见)
影响条件
1、当前数据库用户权限:测试不同数据库用户(root demo)
2、secure-file-priv
设置路径限定,则无法文件读写上传后门
示例
1 |
|
注:文件路径也可用编码上传
读写的路径的问题
1、报错显示获取路径
2、phpinfo页面泄漏
如果不知道路径,思路:
利用常见的默认的中间件,数据库等安装路径读取有价值信息