美文网首页
Sqli-Labs_Lesson_3 GET - Error b

Sqli-Labs_Lesson_3 GET - Error b

作者: 陌小皓 | 来源:发表于2017-03-02 10:25 被阅读0次

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

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

    SQL注入
    Lesson-3 #Get - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)
    运行测试环境:http://localhost/sqli-labs-master/Less-3/
    输入ID参数1:http://localhost/sqli-labs-master/Less-3/?id=1 ,返回正常,继续测试陆续输入2,3,4,5,6....,均返回正常,而且随着参数ID值的改变,页面返回的name和Password的值也会出现不同。
    id=1

    我输入单引号进行测试:

    http://localhost/sqli-labs-master/Less-3/?id=1%27

    网站报出错误信息:

    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 ''1'') LIMIT 0,1' at line 1

    单引号报错

    根据报错的SQL语法信息:

    ' ' 1' ') LIMIT 0,1 '

    推测SQL语句中含有(),尝试闭合:

    select * from table where id = ('$ID')

    当输入1' )and ('1'='1,则SQL语句变成:

    select * from table where id = ('1' )and ('1'='1')

    闭合SQL语句成功

    除此之外,也可以尝试截断SQL语句
    当输入1') and 1=1 --+,则SQL语句变成:

    select * from table where id = ('1') and 1=1 --+')

    截断SQL语句成功
    查看源码:
    index.php

    重点关注这段SQL查询语句:

    $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

    通过网站的报错信息可以慢慢推断网站所用的SQL语句,在进行构造注入。

    继续测试一下:
    查询
    使用SQLMAP来测试一下:
    sqlmap结果

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

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

    相关文章

      网友评论

          本文标题:Sqli-Labs_Lesson_3 GET - Error b

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