基于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. java SSM框架 代码生成器 快速开发平台 websocket即时通讯 shiro redis

    A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 , ...

  2. Python之路-初识python及环境搭建与测试(Python安装、Anaconda安装、PyCharm安装)

    一.认识Python 起源 Python的作者是著名的“龟叔”Guido van Rossum,他希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻 ...

  3. bzoj4448 [Scoi2015]情报传递 主席树+树上差分

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4448 题解 练习一下主席树的基础练习题找回感觉. 对于每一次询问,第一问显然随便做. 第二问的 ...

  4. bzoj2306 [Ctsc2011]幸福路径 倍增 Floyd

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2306 题解 倍增 Floyd. 令 \(f[i][j][k]\) 表示走了 \(2^i\) 步 ...

  5. adb server version (31) doesn’t match this client (36); killing…

    版权声明:蜜蜂采花酿蜂蜜,奶牛吃草产牛奶. https://blog.csdn.net/codehxy/article/details/52175186 案例1 报错信息如下 C:\Users\lin ...

  6. 4. jaxp----dom解析器(DocumentBuilderFactory、DocumentBuilder)

    1.DocumentBuilderFactory--解析器工厂(抽象类 javax.xml.parsers.DocumentBuilderFactory) newInstance()  获取 Docu ...

  7. [POJ 1911] 棋盘

    问题描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘.(每次切割都只能沿着 ...

  8. 【leetcode】1026. Maximum Difference Between Node and Ancestor

    题目如下: Given the root of a binary tree, find the maximum value V for which there exists different nod ...

  9. Java缓冲流高效大文件的复制实例

    public class BufferedDemo { public static void main(String[] args) throws FileNotFoundException { // ...

  10. UI定位元素大全(跟App定位元素差不多哦)

    selenium+python自动化之元素定位 作者:一飞冲天 同样的道理,把一个页面上的元素当成是一个对象(你的女神),我们就可以通过她的属性值来找到她,比如她性别女爱好爬山---------你就可 ...