标签归档:sql injection

浅谈SQL注入攻击技巧

0x01 你要知道目前有哪些数据库

微软公司旗下的:

Microsoft SQL server 简称 MS-SQL 或者 SQL SERVER (大型数据库操作,功能和性能异常强大)(一般也是ASP或者ASP.NET)

access,微软Office系列产品之一,极小型数据库。功能和性能当然也是相当一般。性能甚至可以说是相当低(常与ASP应用交互)

Oracle公司旗下的:

MySQL 是一个关系型数据库管理系统(常与PHP web应用交互)

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统

0x02 判断你的web应用是什么类型的数据库

//大家有兴趣,可以自行google,我只列举最常见的
(在可注入的情况下,判断数据库类型)(我以数字型注入为例子)

单引号判断:

id=1’页面出现类似错误显示 “Microsoft JET Database Engine 错误 ‘80040e14′” JET 为ACCESS数据库
id=1’页面出现类似错误显示 “Microsoft OLE DB Provider for sql server错误 ‘xxxxxx’ ” 就为MSSQL数据库

条件判断:
id=1 and user>0 出错爆出user用户名的是 MSSQL

如果不爆错,那么我们用以下方式

id=1 and (select count(*) from sysobjects)>0 访回与id=1时页面一样 就为MSSQL数据库

id=1 and (select count(*) from msysobjects)>0 access会返回你没有权限查看

如果也没反应怎么办?

那我们就盲注吧

mysql 盲注语句为 id=1 and if(1=1,benchmark(100,md5(1)),0) //如果可延时执行,为Mysql数据库
mssql 盲注语句为 id=1 and if(1=1) waitfor delay ’00:00:04′;

0x03 针对数据库类型,进行相应的SQL注入攻击

看了下面的文章,你可能知道为什么要分析是web应用是什么数据库啦:)

如果你分析为 MYSQL 注入,我推荐你看这篇文章。

http://websec.ca/kb/sql_injection#MySQL_Default_Databases

如果你分析为 MSSQL 注入,我推荐你看这篇文章。

http://websec.ca/kb/sql_injection#MSSQL_Default_Databases

如果你分析为 ORACLE 注入,我推荐你看这篇文章。

http://websec.ca/kb/sql_injection#Oracle_Default_Databases

算是一个科普文章(请勿利用你学到的知识,做违反法律的事情,一切后果自己自负)