Sqli-labs之Less-1

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

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

                                        Less-1 ==> 字符型注入

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

                                                         欢迎  Dhakkan

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

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

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

翻译:您的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

结果:

或者:

不能这样写:

附赠:关键源代码:

重点:当分别尝试?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为重点进行讲解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值