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

第一步,判断闭合和列数

发现是单闭合,俩列

第二步寻找显示位

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

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

查表名

查可疑表的字段名

查可疑字段里的内容

最后得到用户名和密码

相关推荐
Elastic 中国社区官方博客5 分钟前
Elasticsearch:搜索教程 - 语义搜索(三)
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
随风M记忆s1 小时前
Redis支持事务吗?了解Redis的持久化机制吗?
数据库·redis·bootstrap
花青泽3 小时前
5-数据库-SQL注入-联合查询-关键字绕过-day13
数据库·sql
笨鸟先飞,勤能补拙9 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
天桥下的卖艺者9 小时前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
隔窗听雨眠9 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
数据库小学妹10 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
龙仔72510 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
神龙天舞200111 小时前
MySQL 备库为什么会延迟好几个小时
android·数据库·mysql
笨鸟先飞,勤能补拙11 小时前
AI 赋能网络安全领域深度剖析
网络·人工智能·windows·安全·web安全·网络安全·github