前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >渗透测试SQL注入漏洞原理与验证(1)——数据库基础

渗透测试SQL注入漏洞原理与验证(1)——数据库基础

原创
作者头像
zhouzhou的奇妙编程
发布2024-09-18 14:45:08
570
发布2024-09-18 14:45:08
举报
文章被收录于专栏:渗透测试专栏

数据库概述

数据库 ( DataBase,DB ):存储在磁带、磁盘、光盘或其他外存介质上、按一定结构组织在一起的相关数据的集合。

数据库管理系统 (DataBase ManagementSystem,DBMS): 一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。

数据库系统 (DataBase System,DBS) : 通常由软件、数据库 (DB) 和数据库管理员 (DBS) 组成。软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统(DBMS)。

数据库(DB) 由 数据库管理系统 (DBMS) 统一管理,数据的插入、修改和检索均要通过数据库管理系统 (DBMS) 进行。数据库管理员负责创建、监控和维护整个数据库使数据能被任何有权使用的人有效使用。

数据库分类

关系型数据库

  • 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。通过SQL结构化查询语句存储数据,保持数据一致性,遵循ACID理论。
  • 关系型数据库的典型产品:MySQL、Microsoft SQL Server、Oracle、PostgreSQL、IBM DB2、Access等。

非关系型数据库

  • 非关系型数据库也被称为NOSQL数据库,NOSQL的本意是“NotOnly SQL”指的是非关系型数据库,而不是“No SQL”的意思。因此,NOSQL的产生并不是要彻底地否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
  • 非关系型数据库的典型产品:Memcached、Redis、mongoDB等。

ACID理论

识别数据库

盲跟踪

  • Web应用技术
  • 不同数据库SQL语句差异

非盲跟踪

  • 报错、直接查询

默认端口号

  • Oracle:1521
  • MySQL:3306
  • SQL Server:1433
  • PostgreSQL:5432
  • mongoDB:27017
  • Redis:6379
  • MemcacheDB:11211

报错信息

MySQL报错:

代码语言:shell
复制
ERROR 1064 (42000):You have an error in your  SOL syntax; check the manual corresponds to your MySOl server version for the right syntax to use near
at line 1

MSSQL(Microsoft SQL Server)报错信息:

Oracle报错信息:

各数据库的版本查询方法区别

代码语言:txt
复制
MSSQL              select @@version

MySQL              select version()  /  select @@version

Oracle             select banner from v$version

PostgreSQL         select version()

各数据库在字符串处理时的区别

各数据库与网页编程语言的搭配

  • ASP和.NET : Microsoft SQL Server
  • PHP : MySQL、PostgreSQL
  • Java : Oracle、MySQL

SQL语法基础

order by

order by : 当后面跟着的数字超出了字段数时,就会报错 ! 通过这个可以确定字段数

联合查询union

因为查询语句构造问题,可直接否认掉之前的查询,构造一个全新的语句来执行,需要注意的是查询的列应当和之前对应。

所以用 and.. union select 1,2,3,4,5,6. 来猜解列数(字段数)只有列数相等了,才能返回True。

知道列名后,把列名置于其中任意位置,就能在那个位置暴出列的内容来。

结合其他函数

结合 exists() 函数猜解表名 and exists(select ...)

exists() 函数用于检査子查询是否至少会返回一行数据。实际上不返回任何数据,而是返回True或者

False。

union select 结合系统函数暴数据库信息

MySQL 5.5以上版本自带 information schema数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名、数据库的表、表栏的数据类型与访问权限等。

union 结合系统函数暴数据库信息

information_schema.SCHEMATA表中的SCHEMA_NAME 查看所有的数据库名:

代码语言:txt
复制
select  * from hehe where id=3 and 1=2 union select 0,0,SCHEMA_NAME from information_schema.SCHEMATA ;

information_schema.TABLES 表中的TABLE_NAME和TABLE_SCHEMA查看所有的表名和所在的数据库:

代码语言:txt
复制
select TABLE_NAME,TABLE_SCHEMA from information_schema.TABLES whereTABLE_SCHEMA = "haha"

结合load file() 读取服务器文件内容

函数 LOAD FILE(file name):读取文件并将文件内容按照字符串的格式返回。

前提条件:

  • 文件的位置必须在服务器上,必须为文件制定路径全名,而且必须拥有FILE特许权(MySQL配置文件中,secure_file_priv不能为NULL)
  • 文件必须可读取,文件容量必须小于 max_alowed_packet 字节
  • 若文件不存在,或因不满足上述条件而不能被读取,则函数返回值为 NULL

load_file()用在MySQL中可以在UNOIN中充当一个字段,读取Web服务器的文件。


本文档所提供的信息仅用于教育目的及在获得明确授权的情况下进行渗透测试。任何未经授权使用本文档中技术信息的行为都是严格禁止的,并可能违反《中华人民共和国网络安全法》及相关法律法规。使用者应当合法合规地运用所学知识,不得用于非法入侵、破坏信息系统等恶意活动。我们强烈建议所有读者遵守当地法律与道德规范,在合法范围内探索信息技术。

我正在参与2024腾讯21天技术创作挑战赛|年中回顾特别季,年中技术沉淀,拯救你的flag,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库概述
    • 数据库分类
      • ACID理论
      • 识别数据库
        • 默认端口号
          • 报错信息
            • 各数据库的版本查询方法区别
              • 各数据库在字符串处理时的区别
                • 各数据库与网页编程语言的搭配
                • SQL语法基础
                  • order by
                    • 联合查询union
                      • 结合其他函数
                        • 结合 exists() 函数猜解表名 and exists(select ...)
                        • union select 结合系统函数暴数据库信息
                        • union 结合系统函数暴数据库信息
                        • 结合load file() 读取服务器文件内容
                    相关产品与服务
                    渗透测试服务
                    腾讯云渗透测试服务(Penetration Test Service, PTS),为客户提供针对于 Web 应用、移动 APP、微信小程序的黑盒安全测试内容;可以覆盖安全漏洞全生命周期,包括漏洞的发现、利用、修复以及修复后的验证。使用腾讯云渗透测试服务,可以随时将安全测试这一动作加入到您的产品研发、应用上线、安全自检等计划中来。不仅快速且便捷,而且稳定可靠,易于管理,有效的提升应用的安全能力。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档