sql注入——union联合注入

union的作用: 用于合并两个或多个查询语句的结果集,注意:union内部的查询语句必须查和外部相同数量的列。

order by的作用:用于根据指定的列对结果集进行排序

使用order by的目的:因为order by对没有的列进行排序时会报错,利用这个特性能够快速的确定这张表有多少个字段

 

展示查询到的所有的结果:group_concat()函数,弊端是前端做字符串长度限制的时候,如果合并后的数据长度超出,会导致显示不完全

            推荐使用limit一个一个进行查看

 

注入步骤:

  1.   先用order by确定字段数
  2.   用union select 1,2,3 找到数据在屏幕上回显的位置
  3.   查库名(使用database()函数)
  4.   查表名
  5.   查列名
  6.   查列里面的需要的数据

 

清楚MySQL数据库的特点:

  1.   information_schema.tables:记录表名信息的表                    记录表名信息的字段叫"TABLE_NAME"                       记录库名信息的字段叫"TABLE_SCHEMA"
  2.   information_schema.columns:记录列名信息表                    记录列名信息的字段叫"COLUMN_NAME"

 

常见的手动闭合方式:

  

  \表示转义,直接输入\会将字段的闭合方式暴露出来,因为被转义不生效,导致SQL语句报错,并爆 出闭合方式。

  注:'1\' LIMIT 0,1 ,发现\转义后有一个单引号,说明此sql语句基于单引号闭合。

  

  

  我们再来看一个: http://192.168.31.120/sqli-labs/Less-3/?id=1\ 注:''1\') LIMIT 0,1' ,发现\转义后有一个单引号即括号,说明此sql语句基于单引号括号闭合。

  

  

 

posted @ 2024-03-14 15:11  吃饭睡觉娶岳梅  阅读(16)  评论(0编辑  收藏  举报