学习笔记十一:SQL注入初探
SQL
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL注入
SQL注入攻击是通过将恶意的SQL查询或添加语句插入到应用的输入参数中,再在后台SQL服务器上解析执行进行的攻击,它是目前黑客对数据库进行攻击的最常用手段之一。
当访问动态网页时,Web服务器会向数据库发起SQL查询请求,如果权限验证通过就会执行SQL语句。
这种网站内部直接发送的SQL请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造SQL语句,如果用户输入的数据被构造成恶意SQL代码,Web应用又未对动态构造的SQL语句使用的参数进行审查,则会带来意想不到的危险。
在使用SQL注入时要注意:
1.要有参数值的传递
2.参数值是可控的(就是说我输入的参数值不能被判定为不合法字符)
3.没有做防护过滤就带入数据库执行
SQL注入带来的威胁主要有如下几点
- 猜解后台数据库,这是利用最多的方式,可盗取网站的敏感信息。
- 绕过认证,例如绕过验证登录网站后台。
- 注入可以借助数据库的存储过程进行提权等操作。
常见数据库的介绍
Access数据库
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图 形?户界?两项特点,是 Microsoft Office 的系统程序之?。 Microsoft Office Access是微软把数据库引擎的图形?户界?和软件开发?具结合在?起的?个数据库管理系统。 它是微软OFFICE的?个成员。MS ACCESS以它??的格式将数据存储在基于Access Jet的数据库引擎?。它还可以直接导?或者链接数据(这些 数据存储在其他应?程序和数据库)。
Access数据库结构
表名---->列名---->内容数据 他不像其他的数据库?样、??创建多个数据库然后才是表再是内容、?access的话 只有?个库若?张表。
查看Access数据库
可以安装office套件进?查看、或者可以通过别的?具、如DbView、Easy Access等。
浏览测试所使用的表
使用数据库查看器打开Database目录下的#Data.mdb文件
MySQL数据库
MySQL是?种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使?最常?的数据库管理语?- -结构化查询语?(SQL)进?数据库管理。 由于MySQL是开放源代码的,因此任何?都可以在General Public License的许可下下载并根据个性化的需要对其 进?修改。MySQL因为其速度、可靠性和适应性?备受关注。?多数?都认为在不需要事务化处理的情况 下,MySQL是管理内容最好的选择。
MSSQL数据库
美国Microsoft公司推出的?种关系型数据库系统。SQLServer是?个可扩展的、?性能的、为分布式客户机/服务器 计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统?案。
其主要特点如下:
(1)?性能设计,可充分利?WindowsNT的优势
(2)系统管理先进,?持Windows图形化管理?具,?持本地和远程的系统管理和配置。
(3)强壮的事务处理功能,采?各种?法保证数据的完整性。
(4)?持对称多处理器结构、存储过程、ODBC,并具有?主的SQL语?。 SQLServer以其内置的数据复制功 能、强?的管理?具、与Internet的紧密集成和开放的系统 结构为??的?户、开发?员和系统集成商提供了?个出 众的数据库平台。
MSSQL数据库测试环境搭建可以用Gsql
1 本地连接服务器请使?界?中“服务器名”?本框中的?本作为服务器名连接服务器(MDAC版本必须为2.6或以上版 本)。
默认?户名: sa 默认 密码: 123456
2 远程连接请使?“IP,端?”连接,连接前请关闭服务器防?墙!(端?在服务器启动后,可以在状态页看到。)
例如:192.168.0.X,7788
3 数据库转换为相对路径后需要重新启动绿?SQL?可任意移动。
4 数据库?件 (*.mdf + *.ldf)直接复制到 MYDB ?录,重新启动SQL,即可?动附加到SQLSERVER中(数据库名 已经存在的不予理会,?志?件、库?件对应不上的不予理会)。
5 数据库只有在绝对路径模式下才可以?软件?带的恢复数据库?具恢复数据库。
Sql server 2008
https://jingyan.baidu.com/article/948f592434b407d80ef5f97d.html
MSSQL数据库的相关补充
权限介绍
- sa权限:数据库操作,?件管理,命令执?,注册表读取等 system
- db权限:?件管理,数据库操作等 users-adminstrators
- public权限:数据库操作 guest-users
判断权限的语句
- and 1=(select is_srvrolemember('sysadmin')) //判断是否是系统管理员
- and 1=(select is_srvrolemember('db_owner')) //判断是否是库权限
- and 1=(select is_srvrolemember('public')) //判断是否为public权限
调用数据库的代码
<%
set conn =server.createobject("adodb.connection")
conn.open "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name"
%>
Oracle数据库
Oracle Database,?名Oracle RDBMS,或简称Oracle。是甲??公司的?款关系数据库管理系统。它是在数据 库领域?直处于领先地位的产品。可以说Oracle数据库系统是?前世界上流?的关系数据库管理系统,系统可移植 性好、使??便、功能强,适?于各类?、中、?、微机环境。它是?种?效率、可靠性好的、适应?吞吐量的数 据库解决?案。
?般物流和旅游的站点,会?oracle,政府的站点也有可能,但是需要授权。
PostgreSQL数据库
PostgreSQL是?种特性?常齐全的?由软件的对象-关系型数据库管理系统(ORDBMS),是以加州?学计算机系 开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在?较迟的时 候才出现在商业?站数据库中。PostgreSQL?持?部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外 键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以?许多?法扩展,例如通过增加新 的数据类型、函数、操作符、聚集函数、索引?法、过程语?等。另外,因为许可证的灵活,任何?都可以以任何 ?的免费使?、修改和分发PostgreSQL。
?般国外站点?的?较多?些,搭配php。