PHP 应用MYSQL 架构SQL 注入跨库查询文件读写权限操作
MYSQL
注入:(目的获取当前
web
权限)
1
、判断常见四个信息(系统,用户,数据库名,版本)
2
、根据四个信息去选择方案
root
用户:先测试读写,后测试获取数据
非
root
用户:直接测试获取数据
#PHP-MYSQL-Web
组成架构
服务器安装
MYSQL
数据库,搭建多个站点,数据库集中存储
MYSQL
数据库中管理
可以都使用
root
用户管理也可以创建多个用户进行每个网站对应的数据库管理
1
、统一交
root
用户管理
www.zblog.com = zblog = root =>MYSQL
www.demo01.com = demo01 = root =>MYSQL
2
、一对一用户管理(推荐)
www.zblog.com = zblog = zblog =>MYSQL
www.demo01.com = demo01 = demo01 =>MYSQL
access
无数据库用户
mysql
里面有内置的管理用户,其中
root
就是默认数据库管理员用户
网站上面的数据库都在
mysql
中,由
root
或一对一用户去管理
1
、数据库统一管理(
root
用户)
每个网站的数据库都由
root
用户统一管理
网站
A
:
192.168.1.4:81 D:/phpstudy_pro/WWW/Z-Blog
数据库
root
用户
zblog
网站
B
:
192.168.1.4:82 D:/phpstudy_pro/WWW/demo01
数据库
root
用户
demo01
mysql
root(
自带默认
)
网站
A testA
网站
B testB
mysql
testA
用户
网站
A testA
testb
用户
网站
B testB
接受的参数值未进行过滤直接带入
SQL
查询的操作 就是
SQL
注入产生的原理
攻击:利用
SQL
语句执行你想要的东西(
SQL
语句能干嘛,注入就能干嘛)
SQL
语句能干嘛
= SQL
语句由谁决定
=>
数据库类型决定
(
为什么
mysql
注入
oracle
注入叫法原因
)
http://localhost:63342/demo01/new.php?id=3
select * from news where id=3
#PHP-MYSQL-SQL
常规查询
获取相关数据:
1
、数据库版本
-
看是否符合
information_schema
查询
-version()
2
、数据库用户
-
看是否符合
ROOT
型注入攻击
-user()
3
、当前操作系统
-
看是否支持大小写或文件路径选择
-@@version_compile_os
4
、数据库名字
-
为后期猜解指定数据库下的表,列做准备
-database()
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
记录列名的列名值
order by 6
union select 1,2,3,4,5,6
union select 1,2,3,database(),user(),6
union select 1,2,3,version(),@@version_compile_os,6
union select 1,2,3,4,group_concat(table_name),6 from
information_schema.tables where table_schema='demo01'
union select 1,2,3,4,group_concat(column_name),6 from ...




sql注入用单引号就不用编码 (路径 数据库 表名等可以编码)