④sqlilabs的less-3和less-4

less-3和less-4都是基于字符型的SQL注入,具体判断方法是使用模糊测试,即在注入过程,输入一些特殊意义的参数等,并尝让应用程序报错,根据报错的信息来进行SQL注入。
其中,输入的任意字符包括单引号(’),双引号(”),反斜线(\),正括号((),反括号())等。

接下来,我们以less-3为例,完成一次基于字符型的SQL注入(less-4的方法一样)。

less-3


原始页面如下:
④sqlilabs的less-3和less-4_第1张图片

在原始URL后面输入单引号,显示页面如下:
④sqlilabs的less-3和less-4_第2张图片

页面报错信息如下:

ou have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1'') LIMIT 0,1' at line 1

推测此时后台数据库的SQL查询语句如下:

select ... from ... where id = ('1'') limit 0,1;

为了确认我们的判断,在原始URL后面添加两个单引号(”),得到页面如下:
④sqlilabs的less-3和less-4_第3张图片

所以,我们可以确定后天数据库的SQL查询语句为:

select ... from ... where id = ('$id') limit 0,1;

那么,在SQL注入过程中,我们需要注意三个问题:

  • ①单引号的闭合;
  • ②括号的闭合;
  • ③注释掉多余的语句;

接下来,我们使用order by 语句查询字段数目:

  • order by 3显示页面正确:
    ④sqlilabs的less-3和less-4_第4张图片

  • order by 4显示页面错误:
    ④sqlilabs的less-3和less-4_第5张图片

所以,当前数据库的字段数目为3.

接下来,我们使用union语句判断能显示在前端的字段。
④sqlilabs的less-3和less-4_第6张图片

最后,我们一步一步的枚举数据库内容。

  • 枚举数据库名:
    ④sqlilabs的less-3和less-4_第7张图片

  • 枚举当前数据库名:
    ④sqlilabs的less-3和less-4_第8张图片

  • 枚举表名:
    ④sqlilabs的less-3和less-4_第9张图片

  • 枚举列名:
    ④sqlilabs的less-3和less-4_第10张图片

  • 枚举数据项:
    ④sqlilabs的less-3和less-4_第11张图片

你可能感兴趣的:(sql注入,sql注入)