2023-07-08 privacy 第12個(gè)任務(wù)分析

題目要求:

The creator of this contract was careful enough to protect the sensitive areas of its storage.

Unlock this contract to beat the level.

Things that might help:

Understanding how storage works
Understanding how parameter parsing works
Understanding how casting works
Tips:

Remember that metamask is just a commodity. Use another tool if it is presenting problems. Advanced gameplay could involve using remix, or your own web3 provider.

項(xiàng)目源碼:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Privacy {

  bool public locked = true;
  uint256 public ID = block.timestamp;
  uint8 private flattening = 10;
  uint8 private denomination = 255;
  uint16 private awkwardness = uint16(block.timestamp);
  bytes32[3] private data;

  constructor(bytes32[3] memory _data) {
    data = _data;
  }
  
  function unlock(bytes16 _key) public {
    require(_key == bytes16(data[2]));
    locked = false;
  }

  /*
    A bunch of super advanced solidity algorithms...

      ,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`
      .,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,
      *.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^         ,---/V\
      `*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.    ~|__(o.o)
      ^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'^`*.,*'  UU  UU
  */
}

題目解析:
vault一樣骄酗,權(quán)限privacy但是數(shù)據(jù)并不是privacy的搁凸。
拿到data[2]就行轴捎。

引用陵野
里面提到的知識(shí)點(diǎn):

1. 區(qū)塊中的數(shù)據(jù)沒有隱私性
2. 以太坊數(shù)據(jù)存儲(chǔ)寫入的兩種方式
    1. strings和bytes都是大端存儲(chǔ)憋他,從左邊開始存儲(chǔ)數(shù)據(jù)进陡。
    2. 其他類型數(shù)據(jù)屬于小端释牺,從右邊開始存儲(chǔ)數(shù)據(jù)萝衩。
3. 以太坊數(shù)據(jù)存儲(chǔ)位置可計(jì)算
4. 強(qiáng)制類型轉(zhuǎn)換

可知,此合約的數(shù)據(jù)排布是:

unused(31)+locked(1) <--slot0
ID(32)<--slot1
unused(28)+awkwardness(2)+demonination(1)+flattening(1)<--slot2
data[0]<--slot3
data[1]<--slot4
data[2]<--slot5

從這里可以知道没咙,每個(gè)數(shù)據(jù)欄32字節(jié)猩谊,uint16兩字節(jié),uint8一字節(jié)祭刚,并且同數(shù)據(jù)欄內(nèi)從右到左分布牌捷。

所以這里要拿第5組數(shù)據(jù)。
因?yàn)樯厦娴?code>instance address是0x5455850136aBC9F62fA14C6843b8897F1b242B05涡驮,所以下面的代碼執(zhí)行是:

web3.eth.getStorageAt("0x5455850136aBC9F62fA14C6843b8897F1b242B05",5)

得出答案:0xfc96579069282ff7a609042377af7c975da340de5c317cd3af4d2a08207cf54b
然后執(zhí)行操作(取前32位):

'0xfc96579069282ff7a609042377af7c975da340de5c317cd3af4d2a08207cf54b'.slice(0,34)

得出答案:0xfc96579069282ff7a609042377af7c97
再操作:

await contract.unlock('0xfc96579069282ff7a609042377af7c97')

確定await contract.locked()值為false后暗甥,再submit,成功捉捅!

作者后話:

Nothing in the ethereum blockchain is private. The keyword private is merely an artificial construct of the Solidity language. Web3's `getStorageAt(...)` can be used to read anything from storage. It can be tricky to read what you want though, since several optimization rules and techniques are used to compact the storage as much as possible.

It can't get much more complicated than what was exposed in this level. For more, check out this excellent article by "Darius": [How to read Ethereum contract storage](https://medium.com/aigang-network/how-to-read-ethereum-contract-storage-44252c8af925)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撤防,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子棒口,更是在濱河造成了極大的恐慌即碗,老刑警劉巖焰情,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異剥懒,居然都是意外死亡内舟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門初橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來验游,“玉大人,你說我怎么就攤上這事保檐「酰” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵夜只,是天一觀的道長垒在。 經(jīng)常有香客問我,道長扔亥,這世上最難降的妖魔是什么场躯? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮旅挤,結(jié)果婚禮上踢关,老公的妹妹穿的比我還像新娘。我一直安慰自己粘茄,他們只是感情好签舞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柒瓣,像睡著了一般儒搭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芙贫,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天搂鲫,我揣著相機(jī)與錄音,去河邊找鬼屹培。 笑死,一個(gè)胖子當(dāng)著我的面吹牛怔檩,可吹牛的內(nèi)容都是我干的褪秀。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼薛训,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼媒吗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乙埃,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤闸英,失蹤者是張志新(化名)和其女友劉穎锯岖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甫何,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡出吹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辙喂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捶牢。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖巍耗,靈堂內(nèi)的尸體忽然破棺而出秋麸,到底是詐尸還是另有隱情,我是刑警寧澤炬太,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布灸蟆,位于F島的核電站,受9級(jí)特大地震影響亲族,放射性物質(zhì)發(fā)生泄漏炒考。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一孽水、第九天 我趴在偏房一處隱蔽的房頂上張望票腰。 院中可真熱鬧,春花似錦女气、人聲如沸杏慰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缘滥。三九已至,卻和暖如春谒主,著一層夾襖步出監(jiān)牢的瞬間朝扼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工霎肯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擎颖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓观游,卻偏偏與公主長得像搂捧,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子懂缕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 首先:學(xué)習(xí)安全技術(shù)有一段時(shí)間了允跑,從對(duì)它的熱愛開始,到不斷堅(jiān)持,到現(xiàn)在有一點(diǎn)膩了聋丝,感覺自己學(xué)不動(dòng)了索烹。這一路走來,太多...
    Black_Sun閱讀 1,888評(píng)論 1 7
  • 我們知道弱睦,在一個(gè)APK文件中百姓,除了有代碼文件之外,還有很多資源文件每篷。這些資源文件是通過Android資源打包工具a...
    NeWolf閱讀 1,049評(píng)論 6 10
  • 上次的文章中對(duì)常用的加密算法進(jìn)行了一些簡單的介紹瓣戚,這次我們就挑一個(gè)出來說說,今天的主角的是對(duì)稱加密中的當(dāng)頭大哥AE...
    張囧瑞閱讀 23,736評(píng)論 10 31
  • 高級(jí)加密標(biāo)準(zhǔn)(AES,Advanced Encryption Standard)為最常見的對(duì)稱加密算法(微信小程序...
    吃草1990閱讀 1,498評(píng)論 0 0
  • 題目要求: 項(xiàng)目源碼: 題目解析:這里有個(gè)很奇怪的點(diǎn):第一次執(zhí)行isLastFloor要返回false才能執(zhí)行子库,但...
    funCfans閱讀 70評(píng)論 0 0