成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一行代碼損失了???RMB

Shihira / 3172人閱讀

摘要:下面的代碼就沒有意義了,不需要解釋了。。。合約的問題當(dāng)然是做加減乘除的時候沒有用邏輯還有一個問題正常來說,應(yīng)該需要加一個判斷,被授權(quán)的金額不能大于要發(fā)送的金額。。。總結(jié)我發(fā)現(xiàn)了攻擊這個合約的人已經(jīng)攻擊了很多合約了這一些幣大家就別抄底了

背景

又發(fā)現(xiàn)一個ERC20 超級大的漏洞

這個漏洞嚴(yán)重到什么情況呢?

你的錢不再是你的錢,任何人都可以把你的錢轉(zhuǎn)走,你也可以轉(zhuǎn)走任何人的錢

那筆操作記錄是 0x9a6a0ba68214db82ec6fd12ee3a6b4cf1143ec963974d7a5edf97e08b6c482ca


下面我來帶大家看看,黑客是如何實(shí)現(xiàn)的!

我們可以看到執(zhí)行的方法是 transferFrom

那這個方法是干嘛的呢?(從某個人 轉(zhuǎn)錢到 另外一個人 )

這個方法有一個配套的方法approve,你授權(quán)某個人用多少你的錢。。。

所以,這兩個方法的使用場景是,

舉個例子:

我授權(quán)我兒子使用我的100塊錢,那我先調(diào)用approve
然后 我兒子要用錢的時候,調(diào)用transferFrom 來用我的錢,當(dāng)然用一次少一次(而且每次用的錢不能超過我授權(quán)的錢)

代碼解釋
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
    /// same as above
    require(_to != 0x0);
    require(balances[_from] >= _value);
    require(balances[_to] + _value > balances[_to]);

    uint previousBalances = balances[_from] + balances[_to];
    balances[_from] -= _value;
    balances[_to] += _value;
    allowed[_from][msg.sender] -= _value;
    Transfer(_from, _to, _value);
    assert(balances[_from] + balances[_to] == previousBalances);

    return true;
}

這個方法會傳入三個參數(shù)

_from :在用誰的錢

_to : 把錢給誰

_value : 準(zhǔn)備用多少錢

require(_to != 0x0);
require(balances[_from] >= _value);
require(balances[_to] + _value > balances[_to]);

這三行是一些強(qiáng)制要求

你不能把錢轉(zhuǎn)給0x0,也就是空地址

你在用誰的錢(那么這個人的余額一定要大于 你要用的錢)

你轉(zhuǎn)給的那個人錢,那么那個人的余額一定要大于 之前的余額(也就是不能轉(zhuǎn)個-1之類的,導(dǎo)致他余額反而變少了)

uint previousBalances = balances[_from] + balances[_to];
balances[_from] -= _value;
balances[_to] += _value;

這三行

算出兩個人余額的總數(shù)

from 那個人的余額 - value

to 那個人的余額 + value

allowed[_from][msg.sender] -= _value;

這一行我們分解下
allowed[_from][msg.sender] 是 當(dāng)前方法調(diào)用的人(msg.sender)可以使用(_from) 多少錢

也就是假如 我授權(quán)了我兒子100塊,那么

allowed我的地址 = 100(這邊的msg.sender 需要是我兒子的地址,如果是別人的話,我沒有授權(quán)給他,則是0

所以這一行原本的意思是 (我兒子用了多少授權(quán)的金額,那么總授權(quán)金額需要 減掉 被用掉的)

但是呢。。。因?yàn)闆]用用safemath...導(dǎo)致任何人都能通過這一行(也就是 0- value)

0-value是不會報(bào)錯的(當(dāng)然如果用safemath的話,是會報(bào)錯的。。。)

所以呢,只要你找到一個有錢人的地址,,,然后就可以吧他的錢全部轉(zhuǎn)給任何賬戶。。。

下面的代碼就沒有意義了,不需要解釋了。。。

而且他這個合約 沒有暫停的方法。。。

導(dǎo)致現(xiàn)在任何人都可以調(diào)用這個合約。。。

合約的問題

當(dāng)然是做加減乘除的時候沒有用safemath

邏輯還有一個問題

正常來說,應(yīng)該需要加一個 判斷,被授權(quán)的金額 不能大于 要發(fā)送的金額。。。

require(allowed[_from][msg.sender] >= _value);

這樣的話 后面也就不會有這些事情了。。。

總結(jié)

我發(fā)現(xiàn)了 攻擊這個合約的人 已經(jīng)攻擊了很多合約了?。。?br>
這一些幣大家就別抄底了!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24121.html

相關(guān)文章

  • 當(dāng)Kotlin邂逅設(shè)計(jì)模式之代理模式(二)

    摘要:簡述從這篇文章起,我們將繼續(xù)邂逅設(shè)計(jì)模式系列篇中的第二篇代理模式。代理模式可以說很多初級中級開發(fā)者迷惑的設(shè)計(jì)模式。首先我們需要使用類圖直觀地表示出代理模式思想。所以基于代理模式很輕松就實(shí)現(xiàn)。簡述: 從這篇文章起,我們將繼續(xù)Kotlin邂逅設(shè)計(jì)模式系列篇中的第二篇代理模式。代理模式可以說很多初級中級開發(fā)者迷惑的設(shè)計(jì)模式。但是它確實(shí)應(yīng)用很廣,不用多說大家非常熟悉的Retrofit框架,內(nèi)部使用了...

    番茄西紅柿 評論0 收藏0
  • PHP閉包(Closure)初探

    摘要:實(shí)現(xiàn)閉包將匿名函數(shù)在普通函數(shù)中當(dāng)做參數(shù)傳入,也可以被返回。如果將匿名函數(shù)返回給外界,匿名函數(shù)會保存所引用的變量,而外界則不能得到這些變量,這樣形成閉包這個概念可能會更清晰一些。 原文:http://my.oschina.net/melonol/blog/126694 匿名函數(shù)提到閉包就不得不想起匿名函數(shù),也叫閉包函數(shù)(closures),貌似PHP閉包實(shí)現(xiàn)主要就是靠它。聲明一個匿名函數(shù)...

    roadtogeek 評論0 收藏0
  • 手把手教你寫電商爬蟲-第四課 淘寶網(wǎng)商品爬蟲自動JS渲染

    摘要:老規(guī)矩,爬之前首先感謝淘寶公布出這么多有價值的數(shù)據(jù),才讓我們這些爬蟲們有東西可以搜集啊,不過淘寶就不用我來安利了廣大剁手黨相信睡覺的時候都能把網(wǎng)址打出來吧。 系列教程: 手把手教你寫電商爬蟲-第一課 找個軟柿子捏捏 手把手教你寫電商爬蟲-第二課 實(shí)戰(zhàn)尚妝網(wǎng)分頁商品采集爬蟲 手把手教你寫電商爬蟲-第三課 實(shí)戰(zhàn)尚妝網(wǎng)AJAX請求處理和內(nèi)容提取 都已經(jīng)三節(jié)課了,大家活動活動手腳,咱們開始一場...

    Tecode 評論0 收藏0
  • 手把手教你寫電商爬蟲-第四課 淘寶網(wǎng)商品爬蟲自動JS渲染

    摘要:老規(guī)矩,爬之前首先感謝淘寶公布出這么多有價值的數(shù)據(jù),才讓我們這些爬蟲們有東西可以搜集啊,不過淘寶就不用我來安利了廣大剁手黨相信睡覺的時候都能把網(wǎng)址打出來吧。 系列教程: 手把手教你寫電商爬蟲-第一課 找個軟柿子捏捏 手把手教你寫電商爬蟲-第二課 實(shí)戰(zhàn)尚妝網(wǎng)分頁商品采集爬蟲 手把手教你寫電商爬蟲-第三課 實(shí)戰(zhàn)尚妝網(wǎng)AJAX請求處理和內(nèi)容提取 都已經(jīng)三節(jié)課了,大家活動活動手腳,咱們開始一場...

    lx1036 評論0 收藏0

發(fā)表評論

0條評論

Shihira

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<