基于dvwa环境下级别为low的SQL手工注入教程

基于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,当前用户名为“[email protected]”。可以用上文提到的类似的指令获取当前数据库版本和当前的操作系统信息。

通过以上查询我们知道当前数据库名为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手工注入的其他命令还很多(会有后续文章渐渐补充),也可以用工具注入(以后笔者也会慢慢更新)笔者也是初学者,花费了很长时间才体会到一点点,走了很多很多弯路,在工具注入成功的一刹那,也曾激动地落泪,因为每个人所付出的,只有自己明白吧。写给那些像我一样迷茫的人,再坚持一下,绝对会成功的。欢迎大牛批评斧正,笔者水平有限,还有不懂得小伙伴可以发私信给我。

原文地址:https://www.cnblogs.com/x-anonymous/p/9900024.html

时间: 2024-11-05 00:49:44

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

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

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器进行设置之类的,结果没有一个有效果,暑假学习了用Dos来开发Java程序,输入cmd命令中dir(directory)进行查询操作时,显示了一堆中文乱码,原本是想重装系统的,因为电脑里面重要东西有点多,所以自己花了一段时间捣鼓了一下电脑,终于解决了如上两个问题,现在心里很开心,附上如下两幅图: cm

phonegap安卓环境下使用BarcodeScanner插件扫描二维码教程

由于一直在使用phoneGap来开发安卓应用,而对于原生Java小白的我最近这几天一直陷入了如何使用phonegap的BarcodeScanner插件这件事情上,可以说查遍了百度和Google,虽然只是一个小小的二维码的功能,但是这里面还是让我学到了许多开发安卓应用的内容,一起共勉吧. 首先,告诉大家的是 1.我使用的phonegap版本是2.9.0,当然对于phonegap版本的东西我也不太了解,不过可以保证的是phonegap2.0.0之后的按照我这种办法来实现二维码是没有问题的. 2.ph

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

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

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

jdk的安装及环境变量的配置 1.安装JDK开发环境 附上jdk安装包的百度云链接 链接:http://pan.baidu.com/s/1mh6QTs8 密码:jkb6(当然自行去官网下载最好哒,可以下载到最新版) 正规安装下载流程见下面操作: 百度搜索:jdk 你将看到以下界面: 下载网站:http://www.oracle.com/ 开始安装JDK: 修改安装目录如下: 确定之后,单击“下一步”. 注:当提示安装JRE时,可以选择不要安装. 2.配置环境变量: 对于Java程序开发而言,主要

记录一次基于LNMP环境下的Zabbix3.0部署

前言: 公司现需要部署一个Zabbix来监控线上环境,但是线上服务器资源有限,无法部署到其中任意一台.那怎么办呢?于是查阅一番资料,获取解决思路: 1.线下环境使用一台服务器做为Zabbix Server,线上环境任意一台搭建VPN,将所有服务器连接到一起,组成一个安全的局域网环境. 2.线下环境使用一台服务器作为Zabbix Server,使用路由做端口映射,将内网Zabbix Server的10050-10051端口映射出去. 一番比较下,各方面表明:使用第二个思路是最符合实际的.下面是部署

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

---------------------------------------------MyEclipse 快捷键1(CTRL)-----------------------------------Ctrl+1 快速修复Ctrl+D: 删除当前行 Ctrl+Q  定位到最后编辑的地方 Ctrl+L  定位在某行  Ctrl+O  快速显示 OutLine Ctrl+T  快速显示当前类的继承结构 Ctrl+W  关闭当前Editer Ctrl+K  快速定位到下一个 Ctrl+E 快速显示当前

基于struts环境下的jquery easyui环境搭建

下载地址: http://download.csdn.net/detail/cyberzhaohy/7348451 加入了json包:jackson-all-1.8.5.jar,项目结构例如以下: 測试网址: http://localhost:9090/jquery-easyui-1.2.6BasedonStruts/layout.jsp 效果图例如以下: 配置文件web.xml: <?xml version="1.0" encoding="UTF-8"?&g

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

因为2008R2不是那么的普及,加上X3版新出不久,所以伪静态的设置教程比较少,今天搞出来了,其实很简单,那么下面给大家简要说明一下.因为iis7.5集成了url重写,那就就方便多了,首先安装好你的dz论坛之后,那么在你的根目录下(当然有些人也把论坛安装到二级目录)创建一个web.config文件,然后将下面的代码粘贴进去即可. <?xml version="1.0" encoding="UTF-8" ?> <configuration> &

【OGG】RAC环境下配置OGG单向同步 (四)

[OGG]RAC环境下配置OGG单向同步 (四) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① RAC环境下配置OGG单向同步 注意:本篇BLOG中代码部分需要特别关注的地方我都用黄色背景和红色字体来表示,比如下边的例子中,thread 1的最大归档日志号为33,thread 2的最大归档日志号为43是需要特别关注的地方. List of Archived Lo