Dvwa靶场-SQL Injection

一、Low

联合查询注入(单引号)

(1)、闭合与判断注入点

测试输入框是单引号闭合、双引号闭合还是整数型。

**payload:**1' 和 1'' ,一个判断单引号,一个双引号

报错是因为单引号破坏了原sql语句的闭合,所以闭合方式为单引号

(2)、探测列数

**payload:**1' order by 3# 如果这个正常,当把数字加到4时出现报错,说明有3列

但是这个例子只有2列

(3)、寻找显示位

既然现在知道有了2列,那就看看这2列中哪一列会被打印在页面上

payload: 1' union select 1,2#

看到有俩个回显,接下来看一下数据库名称以及它的版本号

版本大于5.0就可以爆库,找出数据了

(4)、结构化拔出数据

1.查表名

**payload:**1' union select 1, convert(group_concat(table_name) using latin1) from information_schema.tables where table_schema=database()#

查到一个访客记录薄,还有一个用户表,我的payload是因为union俩边的字符集不一致,然后我用的是convert()函数,把我注入部分转换成latin1,就可以注入成功了

2.查列名

**payload:**1' union select 1,convert(group_concat(column_name) using latin1) from information_schema.columns where table_name='users'#

看到这个用户表里面有user和password,感觉是用户名和密码

3.得到用户名和密码

**payload:**1' union select user,password from users#

密码是用md5加密的,直接找个在线md5解码网站就可以得到密码

md5在线解码网站https://www.cmd5.com/

二、Medium

联合注入查询(数字)

看到这样的页面,就该明白,没法直接注入,然后就用burpsuite抓包看一下,post注入也能用hackbar去解,但是我都抓包了,所以就直接用bp吧

联合注入还是那四件套,第一就是判断是那种注入类型,把包发送到重放器里,一个一个试,然后发现是数字型

第二步,就是查列数,order by

2列成功,3列失败,所以是2列

第三步,就是寻找显示位,就是看这2列,谁能回显数据

发现俩列都可以,然后就是查库,查版本

最后一步就是根据数据库的性质,准备爆库

先查表名

再查可疑表的字段名,查字段名的时候,它提示我语法错误,是因为下拉菜单提交 POST 请求,且过滤了单引号,所以要把users用16进制绕过

最后得到用户名和密码

三、High

第一步,判断闭合和列数

发现是单闭合,俩列

第二步寻找显示位

看到有俩个回显,接下来看一下数据库名称以及它的版本号

现在可以直接爆破了,后面的都大差不差,就不过多赘述了,直接上截图了

查表名

查可疑表的字段名

查可疑字段里的内容

最后得到用户名和密码

相关推荐
城管不管2 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
倔强的石头1062 小时前
向量数据库从相似度检索走向融合数据底座
数据库
Chengbei113 小时前
DSH渗透测试插件dsh-pentest全新升级!适配DeepSeek Harness,可视化探索链路,一键搭建轻量化AI渗透测试环境。
人工智能·web安全·网络安全·微信·小程序·系统安全·安全架构
今天AI了吗4 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
Csvn4 小时前
📊 SQL 入门 Day 22:视图与物化视图
后端·sql
lilian2335 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
皮卡丘不断更5 小时前
手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口
数据库·sqlite·fastapi·开源项目·个人效率
保卫大狮兄6 小时前
设备管理从台账到报废,完整生命周期一次讲清
数据库·设备管理·设备
数据安全技术观察6 小时前
数据动态脱敏:让脱敏策略跟着数据目录走
大数据·网络·数据库
小席是个热心肠7 小时前
Redis的自我学习
数据库·redis·学习