Huaida / WhiteHatHackerChallenge

0 stars 0 forks source link

张谷丰博士的发现 #1

Open Huaida opened 6 years ago

Huaida commented 6 years ago

我知道怎么取那0.001eth了。我就一步步说,原理:

  1. withdrawFund函数,其中walletLibrary.delegatecall(bytes4(sha3("basicWithdraw()")));调用了basicWithdraw()
  2. basicWithdraw()里面是additionalAuthorizedContract.call.value(0.001 ether)();,所以我们得确保additionalAuthorizedContract地址是我们自己的地址,这样才能拿到那0.001ETH
  3. 发现addAuthorizedAccount这个函数添加了additionalAuthorizedContract这个地址,大家好好看下那个函数,大概意思就是得我们所有人都调用过addAuthorizedAccount函数才能保证能拿到0.001ETH(其中checkAllVote这个函数保证了这一点) 具体如何操作:
  4. 登录myetherwallet,在contracts里面输入地址0x1284f5A4aC6CeB99C23679Cb2F757EFBd2D960AC,ABI/JASON里面填入我等会发的文件,然后我们就可以access这个合约的函数
  5. 先选择authorizedUsers这个函数,我们有四个人,0号是@尹礼春_51_ylic2018 ,1号是我自己,2号是@怀达_52_Huaida ,3号是@杨楫_53_yyssjj33 ,记住这个号码
  6. 选择addAuthorizedAccount这个函数,votePosition里填自己的号码,proposal里填自己的地址,然后write
  7. 如何确认成功添加:选择votes这个变量,输入自己的号码,如果是true那就程功添加了
  8. 所有人添加完之后additionalAuthorizedContract这个地址才有值,我们才能给自己打钱 记住:千万不要在完成这些步骤之前直接调用withdrawFund函数,否则会给0x0打钱

abi.txt是master中的一个文件

Huaida commented 6 years ago

1,调用函数时,gasprice可以设置为 1 这样可以节省gas 2,确认是否成功时,输入是自己的号码 ,比如0,1,2

怀达已经添加成功