(本文不定期更新)

一、所需环境:

1.DVWA

2.web环境 phpstudy/wamp

3.burp suite

二、SQL注入产生的原因:

  程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患

用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据或进行数据库操作。

三、关于SQL注入需要注意的几个点:

1.SQL注入的攻击流程:

  (1)判断注入点:一般分为三大类 GET、POST参数触发SQL注入,Cookie触发注入

  (2)判断注入类型:数字型、字符型、搜索型等

  (3)判断数据库类型

  (4)获取数据库数据,提权

   提供两个学习参考链接:传送门1  传送门2

四、下面演示DVWA的SQL injection模块(显注):

  1.low级别的SQL注入:

  输入1,查询成功。

  

  输入 1 and 1=1 查询成功

  

  输入1 and 1=2 查询成功(说明不是数字型,因为1 and 1=2 在and右边1=2的值是false,如果是数字型,此时应该不会查到东西)

  

  下面验证是否是字符型注入,输入 1' and '1' = '1 查询成功

  

  输入1‘ and ’1‘ = ’2  没查到东西 说明是字符型注入

  

  

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

  输入 1‘ order by 2# 查询成功,#用来注释掉参数后面的单引号

  

  输入 1‘ order by 3# 查询失败 说明只有两个字段,Firstname 和Surname

  

  3.确定显示的字段顺序,这里用union select 联合查询。

   输入 1‘ union select 1,2 #

  

  4.获取当前数据库,输入 1‘ union select 1,database()# 其中database()是获取当前连接的数据库的函数。

  通常from后面都会有一个表名 比如 admin id user之类的union select 1,2 from 这里1,2说明只有两个字段 那么再继续这个语句从from后面的哪个表里面查然后返回页面就会返回1,2这几个数字中的其中几个在mysql中 有很多的注射能用到的函数 比如 user() database() version() 分别用来查看当前数据库连接的用户名,数据库名称 以及mysql的版本比如返回 1 那么你把1 替换成user() database() version() 的其中一个也就是 union select user(), 2  这样就可以在页面上爆出 用户名 绝对路径之类的 函数名等。

  

  这里爆出当前连接的数据库为dvwa

  5.获取数据库中所有的表:

  输入:1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

  

  说明数据库中只有两个表,guestbook users

  6.获取表中的字段名:

  输入:1' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users' #

  可以看到有好多个字段,而我们只需要几个就可以了,user_id,firstname,password

  7.获得数据:

  输入:1' union select group_concat(user_id,first_name),group_concat(password) from users #

  

  8.获取账户密码:

  上面的surname中就是密码,因为都是经过加密需要网上解密一下,我们取Gordon这个用户密码进行验证。

  

  到此就拿到了用户名和密码。

 

2.中级:

  源码:

  

  Medium级别的代码利用mysql_real_escape_string函数对特殊符号\x00,\n,\r,,’,”,\x1a进行转义,并且出现了下拉菜单使得用户无法控制输入的变量。所以解下来要做代理服务器设置并使用burp suite抓包工具(关于代理服务器设置可以看我前面关于暴力破解模块的文章,这里我就不再赘述并截图了)

  这是我选择id=1时抓到的包

·  

·1.首先判断注入类型(字符型、数字型、搜索型等)

 将语句修改为 id =1 and 1=1  将 修改的包 Forward

·

成功! 说明是数字型注入。而如果是字符型输入的话会很麻烦 因为有PHP mysql_real_escape_string() 函数进行转义

  

2.判断有几个字段

  用order by 进行猜解  发现  输入 1 order by 2查询成功 1 order by 3 查询失败,说明依然只有两个字段(First name , Surname)

  

  

3.确定显示字段的顺序,查询成功

  抓包更改参数为 1 union select 1,2

  

4.获取当前数据库名:

 抓包修改 1 union select 1,database()  查询成功,说明当前连接的数据库是dvwa

  

5.获取当前数据库有哪些表

  抓包修改 1 union select 1,group_concat(table_name) from information_schema.tables where table_schema = database() 查询成功

  

只有两个表 guestbook 和 users

6.获取表中的字段名:

  抓包修改为:1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'

  因为使用了转义函数,所以这里要将 'users' 用16进制绕过:

  抓包修改参数为:1 union select 1,group_concat(column_name) from information_schema.columns where table_name = 0x7573657273               成功!

  

7.获取数据信息:我们只需要 user_id first_name last_name password 即可。这里如果是正常情况下应该是用 user 和 password 列,这两列获取出来的数据就是登录DVWA的账户和密码。

  抓包修改参数:

  

接下来将密码转义即可。

  

3.高级(High)

  观察源码:

  只是在后面加了LIMIT 1 且 为字符型注入,那只需要在输入语句最后#注释掉 LIMIT 1即可,其余步骤基本与low级别一样。

  还有不同呢就是在前端页面上,没有输入框了,变成了下图这样,点击会跳转页面,基本杜绝了自动化的SQL注入。但是源码中没有对参数进行防御,还是可以通过burp suite抓包,修改参数,获取数据库信息。

  

  

  1.判断注入类型(因为分析源码,参数被单引号包裹,所以是字符型注入,这里不再赘述,直接验证一下)  

  分别修改参数为 1 and 1 = 2  , 1' and '1' = ‘1’ #  和 1' and '1' = ‘2’ #  用#注释掉后面的LIMIT 1

  

  

  

  

  修改为‘1’=‘2‘时页面是没有正常回显的,说明应该是字符型注入 。

  之后步骤基本与low级别一致 就不再演示了。

  然后用到burp suite工具抓包也只是为了演示一下,但是如果已经知道了源码是哪个样子,可以直接在搜索框里输入,而不用去抓包修改那么麻烦了。

  附最后结果

  

参考文章 group_concat的使用 传送门

  

  

  

  

  

  最后修改于:2020.3.3.9:16

DVWA(三):SQL injection 全等级SQL注入的更多相关文章

  1. DVWA(四):Command Injection 全等级命令注入

    Command Injection : 命令注入(Command Injection),对一些函数的参数没有做好过滤而导致用户可以控制输入的参数,使其恶意执行系统命令或这cmd.bash指令的一种注入 ...

  2. (十二)DVWA全等级SQL Injection(Blind)盲注--SQLMap测试过程解析

    一.测试前分析 前文<DVWA全等级SQL Injection(Blind)盲注-手工测试过程解析> 通过手工测试的方式详细分析了SQL Injection(Blind)盲注漏洞的利用过程 ...

  3. (十一)DVWA全等级SQL Injection(Blind)盲注--手工测试过程解析

    一.DVWA-SQL Injection(Blind)测试分析 SQL盲注 VS 普通SQL注入: 普通SQL注入 SQL盲注 1.执行SQL注入攻击时,服务器会响应来自数据库服务器的错误信息,信息提 ...

  4. DVWA-全等级SQL注入(显注)

    前言: 首先是DVWA环境的搭建: 1.DVWA. 2.PHPSTUDY/WampServer,这里有一个坑,因为他是一体化的,PHP版本必须在5.4以上,否则显注不能打开.或者自己搭建LAMP环境. ...

  5. 【DVWA】【SQL Injection(Blind)】SQL盲注 Low Medium High Impossible

    1.初级篇 Low.php 加单引号提交 http://localhost/DVWA-master/vulnerabilities/sqli_blind/?id=1'&Submit=Submi ...

  6. DVWA全级别之SQL Injection(SQL注入)

    DVWA全级别之SQL Injection(注入)   DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web ...

  7. DVWA SQL Injection 通关教程

    SQL Injection,即SQL注入,SQLi,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害巨大,常常会导致整个数据库被“脱 ...

  8. 新手指南:DVWA-1.9全级别教程之SQL Injection

    *本文原创作者:lonehand,转载须注明来自FreeBuf.COM 目前,最新的DVWA已经更新到1.9版本(http://www.dvwa.co.uk/),而网上的教程大多停留在旧版本,且没有针 ...

  9. DVWA之SQL Injection

    SQL Injection SQL Injection,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常 ...

随机推荐

  1. macos 安装telnet命令

    在10.12及以下版本,都内置了telnet命令,但是在10.13中,已经取消了 接下来给大家介绍下如何安装telnet命令 打开"终端",输入: /usr/bin/ruby -e ...

  2. linux之软连接 硬链接 link ln

    p.p1 { margin: 0; font: 12px "Helvetica Neue"; color: rgba(220, 161, 13, 1) } p.p2 { margi ...

  3. 基于redis的分布式锁防止高并发重复请求

    需求: 我们先举个某系统验证的列子:(A渠道系统,业务B系统,外部厂商C系统)(1)B业务系统调用A渠道系统,验证传入的手机.身份证.姓名三要素是否一致.(2)A渠道系统再调用外部厂商C系统.(3)A ...

  4. 2020 DJBCTF RE wp

    1.anniu 吐槽:浓浓一股杂项的味道,妈的,用xspy和resource har加ida死活搜不到回调函数,淦 下一个灰色按钮克星,直接把灰色的按钮点亮,直接点击就可以出了,软件下载链接:http ...

  5. 315M、433M和2.4G笔记

    一.315M无线模块 315m无线模块广泛地运用在车辆监控.遥控.遥测.小型无线网络.无线抄表.门禁系统.小区传呼.工业数据采集系统.无线标签.身份识别.非接触RF智能卡.小型无线数据终端.安全防火系 ...

  6. 何为“Secure Contexts”安全内容? 终于说明白了!

    ​​​何为"Secure Contexts"安全内容? 终于说明白了! 看图说话 [途径1]:地址栏输入: edge://flags/ 按需设置选项后,重启浏览器即可. Allow ...

  7. 【剑指offer】05. 替换空格

    剑指 Offer 05. 替换空格 知识点:: 题目描述 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 输入:s = "We are happy.& ...

  8. Unittest方法 -- 测试断言

    """断言详解"""from unittest_1.it import *def add(a,b): return a - bclass B ...

  9. Java数据库分表与多线程查询结果汇总

    今天接到一个需求:要对一个物理分表的逻辑表进行查询统计.而数据库用的是公司自己研发的产品,考虑的到公司产品的特点以及业务的需求,该逻辑表是按年月进行分表的,而非分区.我们来看一下,在按时间段进行查询统 ...

  10. 前端基础html(二)

    一.html的概念 1.概念:超文本标记语言. 2.超文本,超链接:超级不仅有文本,图片,还有音频,视频等. 3.html:作用:   显示服务器端的响应结果. 二.互联网三大基石 1.url:统一资 ...