sql注入1

Posted on 2018-04-18 23:47  一鲸落万物生  阅读(2016)  评论(0编辑  收藏  举报

一、函数

  1、version()  MYsql版本

  2、user()      数据库用户名

  3、database()   数据库名

  4、@@datadir  数据库路径

  5、@@version_compile_os   操作系统版本

  6、current_user()   当前用户名(可查看权限)

  7、load_file()        读文件

  8、into outfile() / into dumpfile   写文件

        9、group_concat(str1,str2...)     连接一个组所有的字符串,并以逗号分隔每一条数据。

 

二、注释,可用#     --+   url 中用%23

 

三、union操作符

  用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的 列的顺序必须相同。 

  SQL UNION 语法:

   SELECT column_name(s) FROM table_name1

  UNION

  SELECT column_name(s) FROM table_name2

  注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

  SQL UNION ALL 语法

  SELECT column_name(s) FROM table_name1

  UNION ALL

  SELECT column_name(s) FROM table_name2

  另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。 

 

四、Mysql 有一个系统数据库 information_schema,

  存储着所有的数据库的相关信息,一般的, 我们利用该表可以进行一次完整的注入。以下为一般的流程。

  猜数据库

   select schema_name from information_schema.schemata

  猜某库的数据表

  select table_name from information_schema.tables where table_schema=’xxxxx’

   猜某表的所有列

   Select column_name from information_schema.columns where table_name=’xxxxx’

   获取某列的内容

  Select *** from ****

  

  上述知识参考用例:less1-less4

 

五、注释

  1、单行注释,#后面直接加内容 ;单行注释,--后面必须要加空格 ;

  2、多行注释,/**/中间可以跨行;

         3、内联注入, 内联注释是MySQL数据库为了保持与其他数据库兼容,特意新添加的功能。          

          为了避免从MySQL中导出的SQL语句不能被其他数据库使用,它把一些 MySQL特有的语句放在 /*! ... */ 中,

          这些语句在不兼容的数据库中使用时便 不会执行。而MySQL自身却能识别、执行。 

六、order by 语句

  1. ORDER BY 语句用于 根据指定的列对结果集进行排序。

  2. ORDER BY 语句默认 按照升序对记录进行排序。

 

七、字符串连接函数

  1、concat(str1,str2..)函数 直接连接

  2、group_concat(str1,str2..)函数 使用逗号做为分隔符

  3、concat_ws(sep,str1,str2..)函数 使用第一个参数做为分隔符

 

八、information_schema

例:

  select schema_name from information_schema.schemata;

  select table_name from information_schema.schemata where table_schema = ‘zzcms’; 

  select column_name from information_schema.columns where table_schema = ‘zzcms’ and ‘table_name’ = ‘zzcms_zx’;

 

九、SQL注入的分类

 

 

十、基于联合查询的注入模式,步骤

 

十一、判断是否存在注入与求闭合字符

   1、id = 1’ 异常

    id = 1 and 1 =1 -- + 正确

    id = 1 and 1=2 -- + 错误

    结论:极有可能存在数字型SQL注入

    ps:单引号有个特殊的作用:命令分隔符

 

  2、id  = 1’   异常 

       id = 1’ and  1 =1 -- +  正确

        id = 1’ and 1=2 -- +     错误 

     结论:极有可能存在单引号字符型SQL注入

 

  3、id  = 1"   异常 

    id = 1” and  1 =1 -- +  正确 

             id = 1” and 1=2 -- +     错误 

      结论:极有可能存在双引号字符型SQL注入

 

  4、id  = 1)  异常

        id = 1) and  1 =1 -- +  正确 

   id = 1) and 1=2 -- +     错误

        结论:极有可能存在括号数字型SQL注入