学习笔记十一: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。
浙公网安备 33010602011771号