Echo战队第6次培训——SQL注入方法及其原理1

SQL注入之数据库概述 数据库就是一个存储数据的仓库,数据库是以一定方式存储在一起,能与多个用户共享,具有尽可能小的冗余,与应用程序彼此独立的数据集合。 关系型数据库 关系型数据库,存储的格式可以直观地反映实体间的关系,和常见的表格比较相似 关系型数据库中表与表之间有很多复杂的关联关系的 常见的关系型数据库有MySQL,Orcale,PostgreSQL , SQL Server等。 非关系型数据库 随着近些年技术方向的不断扩展,大量的NoSQL数据库如 Mon goDB,Redis出于简化数据库结构,避免冗余,影响性能的表连接。摒弃复杂分布式的目的被设计 NoSQL数据库适合追求速度和可扩展性,业务多变的场景 数据库排行:https://db-engines.com/en/ranking 数据库服务器层级关系: 服务器里面 :多个数据库 :多个数据表 :多个行 列 字段 : 数据 SQL语句语法回顾: 查询当前数据库服务器所有的数据库 show databases; 选中某个数据库 use 数据库名字 test 查询当前数据库所有的表 show tables; 查询t1表所有数据 查询关键 select * 所有 from 表名 select * from t1; 条件查询 id=2 where 条件 编程 if(条件 true){执行} select * from t1 where id=2; 查询id=2 pass =111 union 合并查询 2个特性: 前面查询的语句 和 后面的查询语句 结果互不干扰! 前面的查询语句的字段数量 和 后面的查询语句字段数量 要一致 * == 3 select id from t1 where id=-1 union select * from t1 where pass =111; order by 排序 order by 字段名字 id 也可以 跟上数字 1 2 3 4 .。。。。。 猜解表的列数 知道表有几列

December 4, 2022 · 1 min · Red

Echo战队第6次培训——SQL注入方法及其原理2

SQL注入之MYSQL手工注入 本章节重点在于熟悉注入流程,以及注入原理。练习靶场为sqli-labs第二关数字型注入。 sqli-labs数字型注入 在url中输入id值,执行查询sql语句。即可得到对应数据 less-2源码分析: 浏览器 进行数据提交 服务器 : get 提交 : url 数据长度 速度快 用于: post 提交 : 服务器 安全性 数据量 注入流程 注入语句 尝试手工注入: SQL注入: 1.判断有无注入点 and 1 = 1; true 随便输入内容 == 报错 注入 == 没有注入 2.猜解列名数量 order by %20 空格 字段 4个 3.报错,判断回显点 union 4.信息收集 数据库版本 version() 高版本:5.0 系统库: information 。。。 数据库名称:database() 低版本:5.0 5.使用对应SQL进行注入 数据库库名:security . 下一级 information_schema.tables 查找表名 table_name 查询security库下面 所有的表名 database() = 前后 连到一起 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() 表: users 如何查询表里面有那些字段? user 字符 转行 16进制 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' username password 字段数据 select username,password from users union select 1,2,(select group_concat(username,:,password)from users)

December 4, 2022 · 1 min · Red

Echo战队第7次培训——SQL注入方法及其原理3

SQL注入之数据提交方式 GET方式注入 get注入方式比较常见,主要是通过url中传输数据到后台,带入到数据库中去执行,可利用联合注入方式直接注入 POST方式注入 post提交方式主要适用于表单的提交,用于登录框的注入 方法:利用BurpSuite抓包进行重放修改内容进行,和get差别是需要借助抓包工具进行测试,返回结果主要为代码,也可转化为网页显示 Request方式注入 概念:超全局变量 PHP中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可以用,这些超全局变量是: $_REQUEST(获取GET/POST/COOKIE)COOKIE在新版本已经无法获取了 $_POST(获取POST传参) $_GET(获取GET传参) $_COOKIE(获取COOKIE传参) $_SERVER(包含了诸如头部信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组) HTTP头注入 什么是Header头? 通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机响应消息。 这两种类型的消息有一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。 HTTP的头域包括通用头,请求头,响应头和实体头四个部分 什么是Header头部注入? header注入,该注入是指利用后端验证客户端信息(比如常用的cookie验证)或者通过header中获取客户端的一些信息(比如User-Agent用户代理等其他header字段信息),因为这些信息在某些地方是会和其他信息一起存储到数据库中,然后再在前台显示出来,又因为后台没有经过相对应的信息处理所以构成了sql注入。 SQL注入之数据类型 (1)数字型注入点 许多网页链接有类似的结构 http://xxx.com/users.php?id=1 基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字,在大多数的网页中,诸如 查看用户个人信息,查看文章等,大都会使用这种形式的结构传递id等信息,交给后端,查询出数据库中对应的信息,返回给前台。这一类的 SQL 语句原型大概为 select * from 表名 where id=1 若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where id=1 and 1=1 (2)字符型注入点 网页链接有类似的结构 http://xxx.com/users.php?name=admin 这种形式,其注入点 name 类型为字符类型,所以叫字符型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where name='admin' 值得注意的是这里相比于数字型注入类型的sql语句原型多了引号,可以是单引号或者是双引号。若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where name='admin' and 1=1 ' 我们需要将这些烦人的引号给处理掉。 (3)搜索型注入点 这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有 "keyword=关键字" 有的不显示在的链接地址里面,而是直接通过搜索框表单提交。此类注入点提交的 SQL 语句,其原形大致为:select * from 表名 where 字段 like '%关键字%' 若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where 字段 like '%测试%' and '%1%'='%1%' ...

December 4, 2022 · 1 min · Red

Echo战队第4次培训——MySQL数据库

课件下载

November 28, 2022 · 1 min · Red

Echo战队第3次培训——计算机网络体系结构

课件下载

November 27, 2022 · 1 min · Red