less-3和less-4都是基于字符型的SQL注入,具体判断方法是使用模糊测试,即在注入过程,输入一些特殊意义的参数等,并尝让应用程序报错,根据报错的信息来进行SQL注入。
其中,输入的任意字符包括单引号(’),双引号(”),反斜线(\),正括号((),反括号())等。
接下来,我们以less-3为例,完成一次基于字符型的SQL注入(less-4的方法一样)。
less-3
原始页面如下:
在原始URL后面输入单引号,显示页面如下:
页面报错信息如下:
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后面添加两个单引号(”),得到页面如下:
所以,我们可以确定后天数据库的SQL查询语句为:
select ... from ... where id = ('$id') limit 0,1;
那么,在SQL注入过程中,我们需要注意三个问题:
- ①单引号的闭合;
- ②括号的闭合;
- ③注释掉多余的语句;
接下来,我们使用order by 语句查询字段数目:
order by 3显示页面正确:
order by 4显示页面错误:
所以,当前数据库的字段数目为3.
接下来,我们使用union语句判断能显示在前端的字段。
最后,我们一步一步的枚举数据库内容。
枚举数据库名:
枚举当前数据库名:
枚举表名:
枚举列名:
枚举数据项:
来源:CSDN
作者:bear_n
链接:https://blog.csdn.net/bear_n/article/details/52938090