zoukankan      html  css  js  c++  java
  • DVWA SQL Injection LOW

    最近在学习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的值:获得管理员账号及密码

  • 相关阅读:
    自动化运维工具Ansible实战Playbooks剧本使用
    Mysql5.6.x版本半同步主从复制的开启方法
    mysql数据库的一些基本概念
    mysql之视图
    mysql之索引
    机器学习笔记09-----决策树与随机森林1---决策树概述
    机器学习笔记08-----回归2
    Anaconda 利用conda安装第3方包
    机器学习笔记07-----回归1
    使用navicat导出数据库字典
  • 原文地址:https://www.cnblogs.com/qingwuyou/p/10687471.html
Copyright © 2011-2022 走看看