首页 > 技术文章 > DVWA SQL Injection LOW

qingwuyou 2018-11-26 21:03 原文

最近在学习SQL注入,初出茅庐,就从dvwa开始吧

sql注入可以通过sqlmap工具实现,为了更好地了解原理,这里主要是手工注入

注入的一般流程为:

1,找到注入点,此步骤可通过工具

2,判断注入类型

3,判断列数,展示位

4,利用函数获取数据库用户,版本号,数据库名等信息

5,联合注入法利用information_schema数据库中存储所有的表查看所有的表名

6,同步骤五获取字段名

7,根据字段名查看值

low级别:

更改过DVWA Security为low级别后我们就进到如下页面:

通过查看源码发现low等级的没有对输入的值做任何过滤,可以直接注入

1)用户交互的地方为表单,这也是常见的 SQL 注入漏洞存在的地方,首先我们通过测试语句测试是否存在注入点

     先输入正常的数据查看返回的结果:

     

   可以发现我们刚输入的值被作为ID值显示在页面上,接着我们输入“ ' ”测试,页面报错说明这个表单存在注入漏洞:

    

2)确定存在注入后,我们需要确定诸如类型为数字还是字符,以下是一些测试语句:

      Ps:--+可以用#替换,url 提交过程中 Url 编码后的#为%23

     or 1=1--+

     1' or '1'='1

     'or 1=1--+

     "or 1=1--+

     )or 1=1--+

     ')or 1=1--+

     ") or 1=1--+

     "))or 1=1--+

      我们输入1 or1=1令sql语句返回值为真,结果语句被作为值输出来了,说明不是数字型注入。输入1' or '1'='1 ,返回了数据库          中的所有数据,说明是字符型注入:

      

 

  3)利用order by  字句查询列数,当输入"1' order by 3"时报错,说明列数为2:

        

4) 利用联合注入法测试出展示位:1' and 1=2 union select 1,2#

     

 

5)利用内置函数注入得出连接数据库用户,数据库名称和版本信息:user(),database(), version()

   

    

 

6)利用存储了所有数据库和表信息的information_schema数据库查询所有数据库的名称:

   

 

7)猜表名(太长了,只截了要用 的 表名):

     

8)字段名:发现敏感字段名user password

9)查看user password的值:获得管理员账号及密码

 

 

 

推荐阅读