zoukankan      html  css  js  c++  java
  • DVWA实验--SQL手工注入(Low)

    什么是SQL注入?

    SQL Injection,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。

    Sql 注入带来的威胁主要有如下几点

    • 猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
    • 绕过认证,列如绕过验证登录网站后台。
    • 注入可以借助数据库的存储过程进行提权等操作

    自动化的注入神器sqlmap固然好用,但还是要掌握一些手工注入的思路,下面简要介绍手工注入(非盲注)的步骤。

    1.判断是否存在注入,注入是字符型还是数字型

    2.猜解SQL查询语句中的字段数

    3.确定显示的字段顺序

    4.获取当前数据库

    5.获取数据库中的表

    6.获取表中的字段名

    7.下载数据

    我们使用有现成漏洞的dvwa实验环境来进行注入,选择安全级别为LOW

    image

    查看SQL注入测试页面的源码:

    image

    image

    通过源码我们发现它对参数没有任何的过滤  直接带入数据库进行查询  我们猜测肯定给存在字符型sql注入

    开始工作:

    1. 判断是否存在注入,注入是字符型还是数字型

    输入1,

    image

    查询成功。

    输入1’and ‘1’ =’2,查询失败,返回结果为空:

    image


    输入1’or ‘1234 ’=’1234,查询成功:

    image

    说明存在字符型注入

    接下来我们猜解sql查询语句中的字段数 (逐渐增加order by后面的数字的大小进行猜测)

    image

    image

    image

    当输入3#时就出现了错误,说明只有两列的数据   查询的表的字段数是2

    union 运算符可以将两个或两个以上 select 语句的查询结果集合合并成一个结果集合显示,即执行联合查询。需要注意在使用 union 查询的时候需要和主查询的列数相同,而我们之前已经知道了主查询列数为 2,接下来就好办了。
    输入1' union select database(),user()#进行查询 :

    • database()将会返回当前网站所使用的数据库名字.
    • user()将会返回执行当前查询的用户名.

    image

    同理我们再输入 1' union select version(),@@version_compile_os#进行查询:

    version() 获取当前数据库版本.

    @@version_compile_os 获取当前操作系统

    image

    进行回显:

    image

    接下来我们尝试获取 dvwa 数据库中的表名。
    information_schema 是 mysql 自带的一张表,这张数据表保存了 Mysql 服务器所有数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。该数据库拥有一个名为 tables 的数据表,该表包含两个字段 table_name 和 table_schema,分别记录 DBMS 中的存储的表名和表名所在的数据库。

    我们输入1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa'#进行查询:

    image

    通过上图返回信息,我们再获取到:dvwa 数据库有两个数据表,分别是 guestbook 和 users .

    接下来我们获取表中的字段名     1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'# 

    image

    其中,user和password正是我们想要的

    下面我们获得字段中的数据         1' union select user,password from users#

    image
    爆出来的一长串16进制字符就是md5加密的密码

    通过md5解密即可得到密码

    image

    image

    image

  • 相关阅读:
    ubuntu下如何安装hg(mercurial)?
    vi启动时报错:YouCompleteMe unavailable: requires Vim 7.4.1578+如何处理?
    linux中如何配置vim的别名为vi?
    linux shell中如何让$就表示为$呢?
    redhat 7.6下如何更新YUM源(仓库)?
    redhat下如何查看red hat版本号?
    javascript快速入门11--正则表达式
    javascript快速入门10--运算符,语句
    javascript快速入门9--引用类型
    javascript快速入门7--ECMAScript语法基础
  • 原文地址:https://www.cnblogs.com/arisskz6/p/12191807.html
Copyright © 2011-2022 走看看