Sqli-labs之Less-1

我们先来看看这个环境有哪些题:

接下来开始我们的学习之旅吧!

                                        Less-1 ==> 字符型注入

翻译:获取-基于错误-单引号-字符串

Sqli-labs之Less-1_第1张图片

                                                         欢迎  Dhakkan

                                                请输入ID作为带数值的参数

分别尝试将 ?id=1    ?id=1'   ?id=1"  添加到url中,发现 ?id=1' 报错,说明是字符型注入(且是单引号注入)。

我们可以在http://192.168.33.1/sqli/Less-1/ 后面直接添加 ?id=1' ,来看一下效果:

Sqli-labs之Less-1_第2张图片

翻译:您的SQL语法有错误;请查看与MySQL服务器版本相对应的手册,以获取在第1行“1”限制0,1附近使用的正确语法 。

    从上述错误当中,我们可以看到提交到 sql 中的 1'  在经过 sql 语句构造后形成  '1'' LIMIT 0,1,
多加了一个 ' 。这种方式就是从错误信息中得到我们所需要的信息,那我们接下来想如何将多余的 ' 去掉呢?
尝试 'or 1=1 --+

PS   --+可以用#替换,都代表注释  在url 提交过程中 Url 编码后的#为%23

        在url中空格和一些特殊字符会进行url编码例如:#是%23,空格是%20, '是%27 ,+是空格

        url编码表:https://www.w3school.com.cn/tags/html_ref_urlencode.html

        在此环境中要想使用注释符#就得写成%23,否则会报错。 

        mysql中有-- (注意两杠后面有一个空格)和#两种注释方法,也可以这么注释-- #,防止有过滤。----经过测试该环境支持这些注释:--%20 , -- #  ,--+  ,%23

此时构造的 sql 语句就成了

Select ****** where id = '1' or 1 = 1 --+ ' LIMIT 0,1 或者
Select ****** where id = '1' or 1 = 1 # ' LIMIT 0,1

结果:

Sqli-labs之Less-1_第3张图片

或者:

Sqli-labs之Less-1_第4张图片

不能这样写:

Sqli-labs之Less-1_第5张图片

附赠:关键源代码:

重点:当分别尝试?id=1    ?id=1'   ?id=1" 为什么只有?id=1' 报错?

     那是因为Mysql查询并不严格, 而在select * from users where id='1'' limit 0,1  中有一个单引号没有闭合而报错,而在select * from users where id='1" ' limit 0,1  中虽然多了一个双引号,但mysql查询时会把它当成两个单引号,而这两个单引号又闭合了,所以查询时不会报错。

 

从上面的实验中我们得出了着这一题是字符型注入,那么接下来就要爆数据库,爆表名,爆字段,报数据。这里以Less-2为重点进行讲解。

你可能感兴趣的:(Sqli-labs之Less-1)