区块链安全基础四
八.区块链攻击与防御安全威胁分析 自身结构的复杂性和应用场景的多样性 恶意攻击者可能针对区块链应用的底层技术缺陷、低耦合性等安全漏洞展开攻击,从而非法攫取利益。 分类: 分类数据层威胁数据层、网络层和共识层是区块链技术体系中最基础、最必要的3个层级,而数据层是其中最重要的一层,主要涉及区块链的数据结构、数字签名、哈希函数等密码学工具。这些密码学工具在保护区块链数据隐私的同时,其固有的碰撞攻击、后门攻击等安全问题也给区块链数据隐私带来了一定威胁。此外,攻击者也可能通过交易延展性攻击和恶意信息攻击破坏交易秩序和区块链网络环境。因此,区块链数据层面临的安全威胁主要包含数据隐私窃取和恶意数据攻击。 原因:区块链的数据层主要负责底层数据的存储,包括交易信息、区块头等关键数据。由于区块链的不可篡改性,一旦数据被写入,修改这些数据是极其困难的。然而,如果攻击者在数据层植入恶意信息或成功篡改已有数据,可能会对整个链的安全性造成威胁。 类型:常见的数据层攻击包括51%攻击,通过控制大多数计算力来重写区块链历史;以及时间戳攻击,即通过操纵时间戳来影响区块的产生。 密码算法的安全风险:如果使用的...
区块链安全基础三
七.恶意代码及防范技术与漏洞挖掘技术7.1 恶意代码的概念7.1.1常见名词举例计算机病毒: 是一种计算机程序代码,它递归地复制自己或其演化体。病毒感染宿主文件或者某个系统区域,或者仅仅是修改这些对象的引用,来获得控制权并不断地繁殖来产生新的病毒体 蠕虫病毒: 主要在网络上进行复制 逻辑炸弹: 通常是合法的应用程序,在编程时写入一些“恶意功能” 特洛伊木马: 隐藏在一个合法的躯壳下的恶意代码 漏洞利用: 漏洞利用代码(exploit code)针对某一特定 漏洞或一组漏洞 下载器: 通过破坏杀毒软件,然后再从指定的地址下载大量其他病毒、木马进入用户电脑 玩笑程序 7.1.2恶意代码的危害 破坏数据 占用磁盘存储空间 抢占系统资源 影响计算机运行速度 7.1.3恶意代码的命名规则1<病毒前缀>.<病毒名>.<病毒后缀> 病毒前缀是指一个病毒的种类 病毒名是指一个病毒的家族特征,是用来区别和标识病毒家族的 病毒后缀是指一个病毒的变种特征,是用来区别具体某个家族病毒的某个变种的 7.2 恶意代码的生存原理7.2.1恶意代...
如何提pr&vscode如何连上wsl
参与开源项目流程(Fork & PR) Fork 仓库 在目标开源项目页面点击 Fork,将项目复制到自己的 GitHub 账户。 克隆到本地 在自己 Fork 的仓库点击 Code 按钮,复制 HTTP/SSH 链接。 在 Git Bash 执行: 12345bash复制编辑git clone 链接地址 修改代码 创建分支 → 修改代码 → 提交到自己的远程仓库。 发起 Pull Request (PR) GitHub 会在原仓库页面提醒你当前有新提交可 PR。 点击绿色按钮(建议使用提醒中的按钮),填写必要信息提交,等待仓库维护者审核合并。 更新 Fork 仓库(与原项目同步) 关联原仓库 12345bash复制编辑git remote add upstream 原仓库链接 获取原仓库最新代码 12345bash复制编辑git fetch upstream 合并到本地主分支 12345bash复制编辑git merge upstream/master 推送到远程 Fork 仓库(可选) 12345bash复制编辑git p...
如何提pr&vscode如何连上wsl
参与开源项目流程(Fork & PR) Fork 仓库 在目标开源项目页面点击 Fork,将项目复制到自己的 GitHub 账户。 克隆到本地 在自己 Fork 的仓库点击 Code 按钮,复制 HTTP/SSH 链接。 在 Git Bash 执行: 12345bash复制编辑git clone 链接地址 修改代码 创建分支 → 修改代码 → 提交到自己的远程仓库。 发起 Pull Request (PR) GitHub 会在原仓库页面提醒你当前有新提交可 PR。 点击绿色按钮(建议使用提醒中的按钮),填写必要信息提交,等待仓库维护者审核合并。 更新 Fork 仓库(与原项目同步) 关联原仓库 12345bash复制编辑git remote add upstream 原仓库链接 获取原仓库最新代码 12345bash复制编辑git fetch upstream 合并到本地主分支 12345bash复制编辑git merge upstream/master 推送到远程 Fork 仓库(可选) 12345bash复制编辑git p...
solidity基础003
关键词:ABI delegatecall create/create2 selector try catch ABI编码解码ABI (Application Binary Interface,应用二进制接口)是与以太坊智能合约交互的标准。数据基于他们的类型编码;并且由于编码后不包含类型信息,解码时需要注明它们的类型。 ABI编码: 1. abi.encode 用于和合约交互,并将每个参数填充为32字节的数据,并拼接在一起 12345function encode() public view returns(bytes memory result) { result = abi.encode(x, addr, name, array);} 编码的结果为 0x000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000007a58c0be72be218b41c608b7fe7c5bb630736c7100000000000000...
区块链原理——区块链概念
区块链的基本概念基本定义 从字面上理解,区块链就是由多个记录数据的区块构成的链式数据结构。 从技术角度来看,区块链是一种基于P2P网络架构的分布式账本技术系统: 以“块-链”式数据结构来验证与存储账本数据 使用密码学方法保证数据传输和访问的安全 从应用角度来看,区块链是一种新型的无中介陌生人信任服务应用支撑平台系统。 面向由陌生主体构成的开放网络环境 提供分布式账本记账服务 特点 去/弱中心化 可溯源 不可篡改 数字价值唯一性(采用共识机制和密码学方法实现) 智能合约 开放性 去信任 类型 公有链 公有链(Public Blockchain),任何人(任何个体与组织)都可以参与区块链数据的维护和读取,数据完全开放透明,免费开放 目前全球最有影响力的公有链是比特币和以太坊系统。 联盟链 联盟链(Consortium Blockchain),联盟链即区块链共识建立的范围及公共账本的公开对象为有限主体,如行业联盟成员之间,联盟成员平等参与区块链网络构建、公共账本创建与维护。 联盟链系统一般都需要严格的身份认证和权限管理,节点的数量在一定时间段内也是确定的...
solidity基础002
关键词:constructor&Modifier event 继承 接口 异常 重载 库合约 引用 回调 构造函数constructor和修饰器Modifierconstructor 定义:是一种特殊函数 每个合约可以定义一个,并且在部署合约时自动运行一次。 可用于初始化合约参数: 123456789101112131415161718// SPDX-License-Identifier: MITpragma solidity ^0.8.0;contract MyToken { string public name; string public symbol; uint256 public totalSupply; address public owner; //带参数的构造函数用于初始化状态变量 constructor(string memory _name, string memory _symbol, uint256 _initialSupply) { name = _name; ...
区块链安全基础二
四.数字签名与认证技术消息摘要算法:消息摘要是保证明文无法篡改、完整性的一种算法,消息摘要不是加密明文,也不是加密算法 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。 消息摘要看起来是“随机的”。 一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同 消息摘要函数是无陷门的单向函数,即只能进行正向的消息摘要而无法从摘要中恢复出任何的消息 好的摘要算法,没有人能从中找到“碰撞”,虽然“碰撞”是肯定存在的。 Hash函数:Hash函数特点:(令h表示哈希函数,h满足以下条件) 输入可以是任意长度的消息或文件M; 输出长度是固定的; 给定h和M,计算h(M)是容易的; 给定h的描述,找两个不同的消息M1和M2,使得h(M1)=h(M2)在计算上是不可行的。 Hash函数的安全性:在现有的计算资源下,找到一个碰撞是不可能的。 Hash函数在网络安全应用中,不仅能用于保护消息或文件的完整性,而且也能用作密码信息的安全存储。 主要Hash算法有MD2、MD4、MD5、SHA。 其中,MD5能产生128比特长度的哈希值,它的使用广泛,常用于网...
solidity基础001
关键词:变量 数值类型 函数 数组 印射仅个人学习使用(WTF学习笔记) 数值类型初始值bytes1 是固定大小的字节类型,表示一个 1 字节的值(8 位)。它的初始值(默认值)是 0x00,即所有位都为 0。 具体解释: 在 Solidity 中,任何未赋值的变量都会有一个默认值。对于 bytes1 类型,它的默认值是一个长度为 1 字节的值,所有的位都被初始化为 0,用十六进制表示为 0x00。 如果用二进制表示,它是 00000000。 值类型初始值 boolean: false string: “” int: 0 uint: 0 enum: 枚举中的第一个元素 address: 0x0000000000000000000000000000000000000000 (或 address(0)) function internal: 空白函数 external: 空白函数 引用类型初始值 映射mapping: 所有元素都为其默认值的mapping 结构体struct: 所有成员设为其默认值的结构体 数组array 动态数组: [] 静态数...
【学习笔记】渗透测试过程1
1. 设置网络环境 将 Kali 虚拟机和靶机的网络适配器改为桥接模式。 在 Kali 虚拟机和靶机相互 ping 通,确保网络连通性。 切换到 root 模式进行操作。 Nmap(用于信息收集 资产探测:ip存活、系统、软件、软件版本、端口) 扫描网段: 1nmap -sn 192.168.42.0/24 查看网段中存活的主机。 全面扫描靶机: 1nmap -A <靶机IP> 在本实验获取数据库端口(1433)。 判断系统类型: 1nmap -O <靶机IP> 在 running: 后面查看主机系统信息。 【图片2】 服务版本扫描(运行软件): 1nmap -sV <靶机IP> 端口扫描: 1nmap -p1-65535 (目标端口)<靶机IP> 端口 27689 测试:扫描出异常(unknown)端口,在浏览器访问 <靶机IP>:27689。 随机 IP 扫描: 1nmap -v -iR(随机) <数量> -Pn -p 80 如果对方开了防火墙——(报)filter...









