新手渗透测试训练营SQL注入

“DVWA下sql注入的操作指南。”

学习渗透测试,一定要掌握各种漏洞的检测和利用方法。今天我们分析一下dvwa环境中sql注入从低级到高级的渗透步骤。

手动挖掘Sql注入,首先要发现注入点。以low级别为例,发现一个可以输入内容的文本框时,首先测试一下是不是存在sql注入。

Low Level

分别在文本框中输入1和1’进行测试。输入1时,回显正常,如下:

输入1’时,提示错误。此外,我们可以看到,我们在文本框中输入的内容会显示在url中,也就是说id参数通过get 方式传递。

确定了存在注入的点,就开始尝试注入。通过union select 1,2……测试该注入点可以显示的字段数。union select 1,unionselect1,2 均正常。union select1,2,3时出现报错,说明该注入点最多可以显示两个不同的字段。

确定该注入点可以显示的字段数之后,通过database()函数,获取当前数据库名称。当前数据库名称时“dvwa”

特别需要注意的是:直接用1’union selectdatabase(),user()进行注入,查看当前数据库和用户时,会报错,提示有三个单引号。这三个单引号是系统自动加上的,只要用“–”注释掉,就可以正常执行了。’–’是mysql数据库的单行注释符,而且第二个’-'后面一定要有一个空格(下面构造的SQL语句也是如此),这里它把后台添加的单引号注释掉了。用#注释时,会把submit注释掉。

知道当前数据库名称后,可以利用information_schema数据库获取当前数据库中存在的表。如下图所示,dvwa数据库中有两个表,分别为:guestbook和users。

知道当前数据库以及数据库中的表的名称之后,就可以猜解每个表中的有那些列。如下所示们可以dvwa.users表中有user和password这两组非常重要的数据。获得这个两组数据,就可以明确知道登陆用户以及该用户对用的密码。

用1’union select password,user fromdvwa.users — 命令查看password和 user这两列中的数据。两列中的数据如下:

Medium Level

ID通过下拉菜单进行选择。选择不同ID时,URL并没有任何变化。

那么参数id并不是通过get方式传递的。通过burpsuit抓包,看一下抓取的请求包,发现参数使用post方式传递。可以看到我们上传的id参数如下:

通过修改参数id后面的注入语句进行注入尝试。具体可参考low级别的渗透过程。

在用1 union select1,table_name from information_schema.table wheretable_schem=dvwa命令,尝试查找dvwa数据库中的表时提示Unknown column ‘dvwa’ in ‘where clause’。所以改用database()函数获取数据库名。Database()函数获取数据库名称时,没有出现报错。该命令显示,dvwa数据库中有两张表,分别是:guestbook和users。

知道dvwa中是的两个表的名字之后,继续查看每个表中包含那几个列:1 union select table_name,column_name from information-schema.columns where table_schema=database() and table_name=table_name。

由上一句注入测试,可以看到users表中有user和password两列。将这两列内容导出,我们就可以得到用户登录数据库。用select password,user from dvwa.users命令,查看password和user两列的内容。

High Level

先测试是否存在注入点。Id=1正常,id=1’时报错。可以确定存在sql注入漏洞。

利用union selectdatabase(),user()进行注入,发现只能显示一行内容,那么可以猜测源代码中,对回显的数量,做了限制。

在sql命令中,用#注释,发现可以回显多行内容。那么源代码中,应该是在id参数之后,对显示的内容做了限制。#注释掉id参数后面的命令,把对回显的限制注释掉了。

可以回显之后,后面的注入操作与low级别相同。

反过来,我们查看一下源码,可以发现,在id之后,利用limit语句限制select语句返回的数据数量。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180913A1N1XJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券