基于dvwa环境下级别为low的SQL手工注入教程:
首先是进入已搭建好的dvwa环境中去(一定要搭建好dvwa环境才能进行下面的操作),这可能会是一些初学者所面临的的第一个问题,比如我,曾为了寻找这个入口,浪费了不少的时间,所以在这里就提一下,最好是能够记住,忘了的话可以随时过来看一下:http://127.0.0.1/DVWA/setup.php
按照提示点击最下面的按钮创建数据库,创建成功就会直接进入登录页面进行登录,然后就可以直接访问http://127.0.0.1/DVWA/login.php得到如下登录页面:

初始状态下username和password分别为admin和password
接下来我们login,成功登录
可以看到我们已经成功登录,其中红色箭头所指就是我们SQL注入的地方了,而下面蓝色箭头指向的DVWA Security是设置难度等级的地方,初始状态下,难度一般为impossible,对我们初学者而言,并不适合,我们需要设置为low,再打开红色箭头所指的地方,SQL Injection,得到如下图所示的界面:
这便是一个表单,是用户交互式的地方,也是常见SQL注入漏洞存在的地方。
第1步:我们测试是否存在注入点,先输入“1”(双引号括起来的内容即为要输入的,下同),返回结果:
接下来,输入特殊字符“1'”(1和英文单引号),得到如下结果:
”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''' at line 1“翻译为中文便是”SQL语法有错误;检查与MySQL服务器版本相对应的手册,以获得在第1行“1”附近使用的正确语法“看到这个结果,我们几乎可以确定这个表单存在SQL注入漏洞。
 
第2步:测试信息的列数 使用 order by+数字的形式。例如我们可以输入"1' order by * -- "(*代表具体的数字),要注意的是--后面有空格)随着*数字从1逐渐变大,当*为3时,终于浏览器不再返回正常值,得到了“Unknown column '3' in 'order clause'”表明这里有两个表。这是为什么呢?order by
在SQL语句中是排序的意思,如果这里只有两个表(那么我们使用联合查询union select时一次可以查询两个数据),输入排序三个的指令肯定会犯错,便是这个原因。
 
接下来我们用联合查询,union select,尝试输入“1' and 1=1 union select 1,2 --  ”得到如下结果:
从而,我们可以得出First name处显示结果为查询结果第一列的值,surname处显示结果为查询结果第二列的值。(简单点说,就是First name一行显示第一个命令的值,Surname一行显示第二个命令的值,便是一次联合查询可以得到的两个数据)
 
接下来呢?好像离我们的目标还很遥远(突然想插一句,我们的目标是什么?当然是拿到所有的用户名和密码呀)
 
第3步:获取当前数据库和当前用户名。介绍几个内置函数user()、database()、version(),@@version_compile_os,user()将会返回进行当前查询的用户名,database()将会返回当前网站所使用的数据库名字,version() 获取当前数据库版本,@@version_compile_os获取当前操作系统.。通过输入“1' union select database(),user() -- ”我们得到如下页面,可以看到,绿色箭头一前一后分别代表当前数据库名字和当前进行查询的用户名。蓝色箭头便是两条命令得到的数据。即当前数据库为dvwa,当前用户名为“root@localhost”。可以用上文提到的类似的指令获取当前数据库版本和当前的操作系统信息。
通过以上查询我们知道当前数据库名为dvwa,然而好像……并没有什么卵用……不要慌,问题不大,我们继续。
 
第4步:测试连接数据库权限。可以输入“1' and ord(mid(user(),1,1))=114 -- ”
如图所示,返回正常,表明为root(即最高权限,你可以得到你想要的)。
 
第5步:获取当前用户的表(看不懂没关系,问题不大,往下看就好了)事实上,我们目前的有效信息只有当前的数据库为dvwa,其实MySQL中存在一个百科全书似的数据库叫 information_schema我么可以利用它查到dvwa数据库目录下的表,那么构造查询语句“1' union select table_name,2 from information_schema.tables where table_schema= 'dvwa' -- ”(这里用到了SQL查询的语法以后我会陆续介绍,“SELECT 字段名 FROM 数据表名称 WHERE 搜索子句”)其中在information_schema(就是那个几乎包含所有的那个库)里,有一个表为tables,table_name是表名,table_schema表示的是某个表所在的数据库,所以看懂了吧,联合搜索union select后面的table name便是我们的目的——获取表的名称,from后面便是information_schema这个“库”,where相当于添加了一个条件,就是说在dvwa这个表所在的数据库中…………有没有很乱?我也觉得很乱,笔者也没有接触过什么理论,所以逻辑有点混乱,但大可不必担心,笔者也是看着前辈们的教程,在实践中积累经验,我相信你看了演示,也一定能明白。
好了,可以看到,我们弄出来了两个表,guestbook和users,不假思索,肯定要搞users了!于是输入命令“1' union select column_name,2 from information_schema.columns where table_schema= 'dvwa' and table_name= 'users' -- ”(注意看命令,感受它的格式,体会它的含义,这点很重要!)
 
看!password!终于等到你,还好我没放弃,接下来问题变得简单,“1' union select user,password from users -- ”可以试着理解它的意思,搜索用户(user)、密码(password)在users这个表中。
便得到了我们想要的,但是乍一看,这………………这怪模怪样的东西是密码?
对,这就是加密过的MD5密码,想要破解也很容易,直接百度搜索md5密码在线破解就OK了,笔者用的是这个站点https://www.cmd5.com/
怎么来验证一下呢?
来到这里,“暴力破解”的地方,拿着我们注入得到的用户名和密码感受一下成功的喜悦吧。
 
PS:需要说明的是,本文只是很浅的一部分,事实上,SQL手工注入的其他命令还很多(会有后续文章渐渐补充),也可以用工具注入(以后笔者也会慢慢更新)笔者也是初学者,花费了很长时间才体会到一点点,走了很多很多弯路,在工具注入成功的一刹那,也曾激动地落泪,因为每个人所付出的,只有自己明白吧。写给那些像我一样迷茫的人,再坚持一下,绝对会成功的。欢迎大牛批评斧正,笔者水平有限,还有不懂得小伙伴可以发私信给我。

基于dvwa环境下级别为low的SQL手工注入教程的更多相关文章

  1. 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

    基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器 ...

  2. Windows2008R2+iis7.5环境下的dz论坛X3版伪静态设置教程

    Windows2008R2+iis7.5环境下的dz论坛X3版伪静态设置教程 因为2008R2不是那么的普及,加上X3版新出不久,所以伪静态的设置教程比较少,今天搞出来了,其实很简单,那么下面给大家简 ...

  3. 基于python3环境下搭建Robot Framework 自动化测试框架(一)

    大家都知道,Robot Framework 是基于python2 环境 的一套自动化测试工具,据说python 2 到2020年不维护,现在用python 3 的环境搭建Robot Framework ...

  4. 四步法分析定位生产环境下MySQL上千条SQL中的问题所在

    第一步:通过以下两种方式之一来打开慢查询功能 (1)方式一:通过修改mysql的my.cnf文件 如果是5.0或5.1等版本需要增加以下选项: log-slow-queries="mysql ...

  5. 基于Windows环境下Myeclipse10.0下载安装破解及jdk的下载安装及环境变量的配置

    jdk的安装及环境变量的配置 1.安装JDK开发环境 附上jdk安装包的百度云链接 链接:http://pan.baidu.com/s/1mh6QTs8 密码:jkb6(当然自行去官网下载最好哒,可以 ...

  6. 基于IDEA环境下的Spark2.X程序开发

    我们选择在线安装 这个是windows下的scala,直接双击安装就可以了 安装好之后可以验证一下 这个是我本地的jdk1.8安装包,直接双击安装 安装完成后可以验证一下 https://archiv ...

  7. 基于Windows环境下MyEclipse10快捷键总结

    ---------------------------------------------MyEclipse 快捷键1(CTRL)----------------------------------- ...

  8. 基于Openstack环境下开启SRIOV

    主题思想: 先在系统层面修改配置文件,再去openstack里面修改配置文件 compute node系统层面: 先确认下是否含有ixgbe moudle lsmod |grep ixgbe 修改/e ...

  9. 新闻实时分析系统 基于IDEA环境下的Spark2.X程序开发

    1.Windows开发环境配置与安装 下载IDEA并安装,可以百度一下免费文档. 2.IDEA Maven工程创建与配置 1)配置maven 2)新建Project项目 3)选择maven骨架 4)创 ...

随机推荐

  1. vue项目 PC端点击查看大图

    今天,发现了一款还不错的插件来实现查看大图,成熟度也比较高,支持各种操作 原作品的github地址为 https://github.com/mirari/v-viewer 也有对应的中文文档,使用方法 ...

  2. CSS高度坍塌原因及解决办法

    在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高. 但是当为子元素设置浮动以后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷.由于父 ...

  3. JVM 运行时数据区域划分

    目录 前言 什么是JVM JRE/JDK/JVM是什么关系 JVM执行程序的过程 JVM的生命周期 JVM垃圾回收 JVM的内存区域划分 一.运行时数据区包括哪几部分? 二.运行时数据区的每部分到底存 ...

  4. JSZip

    /*! JSZip - A Javascript class for generating and reading zip files<http://stuartk.com/jszip> ...

  5. javaweb各种框架组合案例(七):springboot+jdbcTemplete+通用dao+restful

    一.介绍 1.springboot是spring项目的总结+整合 当我们搭smm,ssh,ssjdbc等组合框架时,各种配置不胜其烦,不仅是配置问题,在添加各种依赖时也是让人头疼,关键有些jar包之间 ...

  6. 采集容器内存并写到excel

    # coding=utf-8 import os import commands import re from pyExcelerator import * def execute(cmd): sta ...

  7. 树——binary-tree-maximum-path-sum(二叉树最大路径和)

    问题: Given a binary tree, find the maximum path sum. The path may start and end at any node in the tr ...

  8. more 分页显示文件内容

    1.命令功能 more 分页显示文件内容 2.语法格式 more  option file 参数说明 参数 参数说明 -num 指定屏幕显示大小为num行 +num 从行号num号开始显示 -s 把连 ...

  9. eclipse的代码格式化的个性配置

    1.安装jdk a. 到http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载对应版本的jdk,安装到自己电脑上. ...

  10. Swagger详解(SpringBoot+Swagger集成)(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ai_miracle/article/de ...