美文网首页
sql注入原理

sql注入原理

作者: DeerLY | 来源:发表于2018-06-25 17:23 被阅读0次

    information——schema库(MySQL>=5.0才有)

    select 字段,字段 from 数据库.数据表

    在不知道数据库名表名列名的情况下
    select schema_name from information_schema.schemata 查找到所有数据库名;lyb
    select table_name from information_schema.tables where tables_schema = "lyb"
    查看lyb所有表;user message
    select columns_name from information_schema.columns where table_schema = "lyb" and table_name = "user"
    查看lyb中user表中的所有列
    select username,password from lyb.user 查看lyb中user表中username,password信息

    schemata表
    字段:schema_name
    查看数据库名称
    select schema_name from information_schema.schemata
    相当于 show databases;

    tables表
    字段:table_schema
    table_name
    查看lyb所有表
    select table_name from information_schema.tables where table_shcema ='lyb'

    columns表
    字段:table_schema
    table_name
    column_name
    查看lyb数据库user表的所有列名
    select column_name from infotmation_schema.columns where
    table_schema = 'lyb' and table_name = 'user';

    原理:
    用户在可控参数中注入sql语法,破坏原有的sql结构,
    达到编写程序时意料之外结果的攻击行为

    原因
    1,程序编写者在处理应用程序和数据库交互式,
    使用字符串拼接的方式构造sql语句
    2,未对用户可控参数进行足够的过滤便将参数内容拼接进入到sql查询语句中

    哪里可能催在sql注入
    任何从客户端可控且传递到服务器的变量都有可能存在sql注入

    三种注释

    ”-- “
    /* /
    /
    ! */

    • %2b
      “ %22

    %23

    ' %27
    空格 %20
    --+ 注释 + 在url中会被当成空格
    /*/ 可以代替空格
    /
    ! */ 内敛注释

    常用函数

    select user() 查看当前数据库用户

    图片.png
    select database是() 当前连接数据库名称
    图片.png
    select version() 查看当前数据库版本号
    图片.png
    select @@datadir; 查看当前数据库存放路径
    如果是集成化环境搭建的环境 ,可以看到是用的是什么集成化环境
    图片.png
    select @@version_complie_os 查看当前使用的操作系统
    图片.png
    连接字符串的函数

    concat() 无分隔符


    图片.png

    concat_ws() 有分隔符的

    图片.png

    group_concat()以逗号为分隔符查询结果为一行


    图片.png

    相关文章

      网友评论

          本文标题:sql注入原理

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