捐款攻击
捐款攻击该协议是否依赖于balance或者balanceof,而不是内部会计漏洞描述 在以太坊网络上,任何地址的余额(无论是以太币还是代币)都可以通过address(this).balance 或token.balanceof(address)查询。然而,外部账户的余额可以被外部操作(如其他合约调用、用户转账等)影响。依赖于外部状态(即余额)可能导致合约的内部逻辑失去一致性,因为外部账户的状态在合约运行期间是不可预测的。
举例 首位存款人可以中断股份的锻造,如果总资产通过大量捐款被操纵,用户可能无法获得其存款的股份,攻击者操纵依赖于balanceof确定总资产金额并阻止其他用户通过存款换取股份
拒绝服务攻击(DOS)
拒绝服务(DOS)攻击未设定gas费率的外部调用 在以太坊中,每一笔交易都会携带一定数量的Gas,这是为了确保任何执行的操作都不会消耗过多的计算资源,从而避免网络拥堵或资源耗尽。当一笔交易开始执行时,它会从交易者提供的Gas总量中扣除费用,直到合约执行完成或Gas耗尽。如果在执行过程中Gas耗尽,那么交易将被回滚,且已经消耗的Gas不会退还给用户。
漏洞分析: 1, 攻击者可以通过构造高复杂度的交易或智能合约来故意消耗大量的Gas,从而正常交易无法被包含在区块中。例如,攻击者可以创建一个合约,该合约在接收到消息时执行大量计算或存储操作,消耗接近最大Gas限额的Gas量。当许多这样的交易被同时发送到网络时,它们会占据大部分甚至全部的Gas容量,导致其他用户的正常交易无法被确认,从而达到拒绝服务的效果。 2,使智能合约进入无限循环,这将导致Gas立即耗尽,交易失败并回滚。这种攻击通常发生在合约逻辑中存在错误的情况下,例如没有正确处理循环退出条件,或在递归调用中缺少终止条件。当合约进入无限循环时,它会尝试消耗所有可用的Gas,最终导致交易失败,并可能使合约处于不可用状态。
解决方法: ...
20240508 BSC攻击事件分析
BSC攻击事件分析这是一起发生在2024年5月8日币安智能链(BSC)上的闪贷攻击事件,影响的是GPU代币合约。该合约存在自转账漏洞,每次自转账都会导致资产翻倍。黑客利用该漏洞,通过DODO协议以闪贷的方式借入BUSD,在PancakeSwap上兑换成GPU代币,再利用漏洞进行多次自转账,导致其GPU代币余额增加了100亿倍,达到28,070,259,409,924枚代币。最后,黑客将GPU代币卖出换成BUSD,用于偿还闪贷本息,最终窃取约3.2万美元资金。
首先攻击者从DODO借贷协议中发起闪电贷,借出BUSD到攻击合约地址,攻击者合约在调用PancakeSwap协议,将借出的BUSD兑换成GPU代币,利用自我转账漏洞,凭空产生CPU代币,攻击者合约自己给自己转账,每转账一次,GPU资产就会翻倍,攻击者合约将获取到的GPU代币发送到PancakeSwap V2协议中,换取BUSD。然后攻击者从PancakeSwap V2协议中获取的BUSD,将其中的一部分用于返还DODO借贷协议的本金和利息,剩下的都是攻击者所获得的。
完整的调用信息看这里
下面是DODO协议中借贷协议中的借贷函数f ...
web3学习知识
最近又发现一个学习网站,正好趁着国庆假期,再把知识又巩固一遍,就写了这篇学习学习笔记记录一下
含义以前我们的信息都集中在一个软件上,这造成了,我们的信息就会被泄露,就比如2018年Facebook-剑桥分析公司数据泄露丑闻,数百万Facebook用户的个人信息被不当收集并用于影响政治选举,这就是数据集中控制的风险和后果
那么web3就出现了,它是建立在区块链技术上的下一代互联网,它强调权力下放,这就意味着没有集中的权威机构来管理数据和资源
在web3的世界里,用户拥有自己创立的内容和数据,摆脱了对传统中心化平台的依赖,由此web3也促进了新的商业模式,例如:去中性化金融(DeFi) 非同质化代币(NFT) 去中性化自治组织(DAO)
它的发展来看:从Web1.0时代的静态网页,到Web2.0的社交互动,再到Web3.0的去中心化智能网络
Web3 各赛道百花齐放,共同构建一个去中心化、透明化、创新化的数字生态。去中心化金融(DeFi)消除了中介机构,实现了开放式的金融交易和服务;非同质化代币(NFT)赋予了数字资产唯一性和价值;去中心化自治组织(DAO)促进了集体决策和公平管理; ...
CCF区块链技术与应用创新竞赛
参赛队伍最多4人,需要一名指导老师报名时间:截止到2024年9月30号提交作品:截止到2023年10月31号 网址https://btc.ccf.org.cn
foundry的使用和安装
引言上次那个网站,里面有讲foundry,虽然以前学习过,但是还是没能具体学习过,只会一些测试的用法,其他高深的用法还没有了解到,借此机会再次学习一下,就写了这个笔记
安装推荐这个网站Foundry-Book;安装完成后,在终端使用指令:Forge –version 查看有没有安装好,如果没有,就删除从头再来一遍
我们使用的是windows的系统就要去找属于window安装教程(我就反复安装,吃了很多亏),如果你想使用windows上的子系统Linux,就可以在你的终端使用 wsl –install ,然后重启安装即可
使用 (forge )最开始我还没有了解到怎么自己用Foundry全是从仓库 git clone 下来,它自带Foundry,就不需要自己构建文件夹。现在就介绍一下怎么构建一个文件夹包含Foundry测试框架。(注意我们使用的是VSCODE这个软件,非常好用)
首先创建一个文件夹,在git base终端上输入 forge init 文件夹名字
进入文件夹 cd 文件夹名字
再构建项目 forge build 或则 forge compile
测试时使用 forge ...
区块链知识巩固
最近别人分享了一个网站,对于一些知识巩固我觉得挺好的
网站链接我就放在这里
学习这个网站,我就在这个博客上分享一些我的笔记
一,基本常识1,Oracle: 就是充当区块链与外部世界联系的中介,允许智能合约与真实世界交互数据2,Layer2: 它是构建在Laryer1之上的技术,它可以提高区块链交易的扩展性和效率,它通常在交易之外执行,就是为了避免交易拥挤和一些费用产生,如比特币闪电网络3,DAPP:去中心化的应用,通常在区块链上运行,就类比我们现实生活中的app,就是应用4,智能合约:它使自动执行的合约,在区块链上运行5,web3: 它是一个未获许可依赖于去中心化的,也是一个术语,它开创了一个抗审查和透明协议和交易的一个领域6,Chainlink: 它与区块链上的预言机,它通过链上的逻辑和链下的数据和计算,确保这个逻辑和这个数据保持去中心化7,一个区块包括,区块头,区块体
区块头:nonce(交易的计数),前一个哈希值(注意:创世区块没有父哈希值)时间戳,三个树根(状态树根:记录所有账户的余额,信息等,交易树根,收据树根,币基(识别矿工的地址),难度目标(表示挖矿的难度)
区块体 ...
'数据库原理及应用进阶'
进阶MySQL内置函数一,含义:是指一段可以直接被另一段程序调用的程序或代码
二,分类:
字符串函数 (使用时,前面加select)eg,select concat(’he’,’DE’)
CONCAT(S1,S2,S3):字符串拼接,将S1,S2,S3拼接成一个字符串
LOWER(str):将字符串str全部转化为小写
UPPER(str) : 将字符串str全部转化为大写
LPAD(str,n,pad):左填充,用字符串pad对str的左边进行填充,达到n个字符串的长度
RPAD (str,n,pad) :右填充,用字符串pad对str的右边进行填充,达到n个字符串的长度
TPIM(str):去掉字符串头部和尾部的空格
SUBSTRING(str,start,len):返回从字符串str从start位置起的len个长度的字符串
例如,如果要单个工号前面添加0000,就使用update 表名 set workno = lpad(workno,5,’0’)
数值函数
CEIL(x):向上取整
FLOOR(x):向下取整
MOD (x,y): 返回x/y的模
...
数据库原理及应用基础
术语1,数据是数据库储存的基本对象,而数据库则是长期储存在计算机中,有组织,可共享的大量数据的集合 基本特点:永久储存,有组织,可共享,冗余度小,易扩展2,一些基本模型术语:
关系(r):就是一个整体的表,可对关系的描述:关系名 (属性1,属性2…..);关系名就是表名;
关系完整性约束条件:实体,参照,用户定义完整性
属性:表中的一列为一个属性
域:属性的取值范围,一个具有相同类型的值集合
元组(t):表中的一行
主码:也叫码键,表中的某个属性组,它可以唯一确定一个元组,就是一个比较特殊可以用它来确定唯一的值,有点类似于c中的指针;
分量:元组中的一个属性值
关系模式:对关系的描述,也叫联系3,数据库系统里有三种模式:a,模式(逻辑模式,概念模式):数据库中的全体数据逻辑结构和特征的描述,与物理储存的细节和硬件环境,与具体的应用程序,开发环境及高级程序设计语言无关,它是数据库系统模式的中间层b,外模式(子模式,用户模式):数据库用户使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示,每个用户只能看见和访问对应的外模式中的数据,用户只能与外模式建立联系c, ...
区块链入门知识常用链接
推荐这个博主的整个入门区块链的方向,里面有个思维导图,值得一看.点击
僵尸编程学习点击
WTF学院,学习 EVM ,solidity值得一看.点击
Ethernaut靶场练习,点击
damn-vulnerable-defi靶场练习,点击
EVM PUZZLES题解参考链接,点击1 点击二
evm code指令速查 点击
注:自毁函数将会被弃用,点击1,点击2
闪电贷的极简入门
关于solidity的一些基本问题,用于自查,点击
将本地文件上传到github上,
要有一个自己想上传的仓库,cd 要上传的文件名,git remote add origin (ssh下的仓库地址),切换分支,主要是看仓库是master,还是main, 还是其他的分支,git branch -M main , 切换到main分支上直接上传到分支上 git push -u origin main即可
一些智能的工具:ChatGPT;谷歌开发的一个智能软件:Gemini;一个社区的检索问题:Ethereum-Stack-Exchange一个社区的全球交流平台:stackoverflow;web一个知识构建 ...