首页 > 数据库 >SQL Injection Base

SQL Injection Base

时间:2023-11-06 19:33:46浏览次数:34  
标签:SQL 数据库 mysql 信息 Base MySQL Injection

SQL Injection Base

What is DataBase

数据库就是一个存储数据的仓库,数据库是以一定方式存储在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

关系型数据库:

关系型数据库,存储的格式可以直观的反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关的。

常见的关系型数据库有 MySQL,Oracle,PostgreSQL,SQL Server 等。

非关系型数据库:

随着近些年技术方向的不断拓展,大量的 NoSQL 数据库和 MongoDB 、Redis、Memcached 出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。

NoSQL 数据库适合追求速度和可扩展性、业务多变的应用场景。

http://db-engines.com/en/ranking

Install MySQL With Docker

docker pull mysql:5.7
docker run --name <name> -d -p <port>:3306 -e MYSQL_ROOT_PASSWORD=<password> <image>
docker exec -it <name> /bin/bash
mysql -uroot -p

MySQL Base

系统库释义:

information_schema 库:是信息数据库,其中保存着关于 MySQL 服务器所维护的所有其他数据库的信息,比如数据库名、数据库表、表字段的数据类型和访问权限等。Web 渗透中用途很大。

SCHEMATA 表:提供了当前mysql实例中所有数据库的信息。是 show databases 的结果取之此表。

TABLES 表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是 show tables from schemaname 的结果取之此表。

COLUMNS 表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是 show columns from schemaname.tablename 的结果取之此表。

mysql 库:MySQL 的核心数据库,主要负责存储数据库的用户、权限设置、关键字等 mysql 自己需要使用的控制和管理信息。

performance_schema 库:内存数据库,数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用地性能。

sys 库:通过这个数据库,可以查询谁(基于IP或用户)使用了最多的资源、哪张表被访问过最多等等信息。

What is SQL Injection

SQL 注入漏洞是什么

是发生于应用程序与数据库层的安全漏洞。网站内部直接发送的 SQL 请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 SQL 语句,如果用户输入的数据被构造成恶意 SQL 代码,Web 应用又卫队动态构造的 SQL 语句使用的参数进行审查,则会带来意想不到的危险。

GET 型 SQL 注入漏洞是什么

我们在提交网页内容的时候,主要分为 GET 方法、POST 方法,GET 方法提交的内容会显现在网页 URL 上,通过对 URL 连接进行构造,可以获得超出权限的信息内容。

Web 程序三层架构:界面层 + 业务逻辑层 + 数据访问层

原理:

SELECT * FROM t1 WHERE id = %s;
-- sqlStr := SELECT * FROM t1 WHERE name = '%s' username;
当用户输入1 or 1 = 1
实际上执行的 sql
SELECT * FROM t1 WHERE id =1 OR 1=1;
也就是
SELECT * FROM t1;

SQL 注入带来的威胁:

  • 猜解后台数据库,盗取网站敏感信息
  • 绕过验证登录网站后台
  • 借助数据库的存储过程进行提权等操作

SQL 注入步骤:

  • 检索隐藏数据
  • 修改应用程序逻辑
  • Union attack
  • 获取敏感数据
  • 盲注

标签:SQL,数据库,mysql,信息,Base,MySQL,Injection
From: https://www.cnblogs.com/fantasyyy/p/17813518.html

相关文章

  • Debug - MySQL - Err 1062 duplicate entry xxxx for key xxx
    可能原因1脏数据存在 可能原因2当你手动刷sql修改表结构时,可能这张表正有写库操作。一边写库一边修改表结构,就会出现这种错误。。。原因未知,猜测和锁表有关系 两次错误提示:详细的数据是不一样的....而且日期是今天的,说明不是脏数据  等待写库程序结束,再刷表就没......
  • mysql 使用ON DUPLICATE KEY update实现插入或更新操作
    创建一个表CREATETABLE`userinfo`(`UserID`int(11)NOTNULL,`UserName`varchar(45)CHARACTERSETutf8COLLATEutf8_general_ciDEFAULTNULL,PRIMARYKEY(`UserID`))ENGINE=InnoDBDEFAULTCHARSET=utf8;想要实现,没有数据插入新数据,有数据更新数据首先......
  • 实例说明SQL语句用一张表更新另一张表
    在某公司的客户访问信息记录中,有用户信息表users和访问记录表visit,在访问记录表中,会记录时间和访客,访客名和电话信息是从users表中读取。但是后来发现,由于users表中的客户电话号码总是会有变化,所以做了一个修改:在visit表中利用users的数据记录当时的电话号码。示例数据表  ......
  • C#中图片与BASE64码互相转换
    //保存目录stringdir="/upload/user/head";//站点文件目录stringfileDir=HttpContext.Current.Server.MapPath("~"+dir);//文件名称stringfileName="headdemo"+DateTime.Now.......
  • SQLserver、MYSQL、Oracle复制表结构和数据语句
    1.SQLserver语法select*into新表名from旧表名;2.mysql语法CREATETABLE新表名SELECT*FROM旧表;Oracle语法CREATETABLE新表ASSELECT*FROM旧表;......
  • MySQL学习(11)使用EXPLAN查看执行计划
    前言 MySQL查询优化起生成的执行计划是什么,可以通过EXPLAIN命令查看。执行计划在SELECT、DELETE、INSERT、REPLACE以及UPDATE语句前面加上EXPLAIN,可以通过记录的形式输出这条语句的执行计划。EXPLAINSELECT*FROMsingle_table; 列名描述id每个SELECT关键字......
  • sql 多个字段排序问题
    ec_perform_sh_sailing_plan表,上数日期字段shangshuDate;预到日期yuji_daoda_date; 如果上数日期有值,按预到时间降序。如果上数日期没有值,按预到时间升序,上数日期没有值的排在有值的前面;SELECT*FROMec_perform_sh_sailing_planORDERbyCASEWHENshangshuDateISNUL......
  • mysql八股
    设计表字段需要考虑哪些redis跳跃表结点怎么实现的Mysql的索引为什么使用B+树而不使用跳表B+树的层级怎么确定的LIMIT语句查询比较慢怎么解决慢sql优化事务发生死锁怎么解决binlog,怎么使用binlog做数据迁移怎么做实时的数据迁移//redolog......
  • Centos7 安装 Mysql5.7
    一、下载mysql5.7的安装包下载地址:https://dev.mysql.com/downloads/mysql/5.7.html①、选择linux版的②、选择64bit,根据自己的情况来看③、选择下载tar包④、点击下载⑤、等待下载完二、上传到服务器上传到服务器有好几种方法,任意采用一种就可以......
  • 常用MySQL图形化管理工具
    MySQL是一个非常流行的小型关系型数据库管理系统。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。1、phpMyAdmin(http://www.phpmyadmin.ne......