Ich bin neu in der Sicherheit von ICO und Smart Contracts. Versuchen, Fehler in verifizierten Verträgen zu finden. Ich glaube, ich habe einige Probleme in 0x42dB5Bfe8828f12F164586AF8A992B3a7B038164 gefunden, aber ich weiß nicht, wie man sich zurückzieht. Muss ich eine Transaktion selbst erstellen?
HaHa - sehr hinterhältig.
An alle, die versucht sind, an diesem Vertrag herumzuspielen – dh den offensichtlichen Fehler auszunutzen: Sie werden wahrscheinlich Ihren Ether verlieren.
Erklärung folgt.
Es sieht so aus, als gäbe es eine ziemlich verlockende Schwachstelle in der withdrawal()
Funktion: Wenn Sie der Funktion mehr als Limit
Wei senden, sendet sie Ihnen den gesamten Saldo des Vertrags - den Betrag, den Sie gesendet haben, plus die bereits vorhandenen 0,36 Eth. Sofortiger Gewinn!
Allerdings gibt es diese unschuldig aussehende, aber dennoch eigentümliche Funktion in delegatecall
einem logEvent()
anderen Vertrag. Um es kurz zu machen, es wird kein Ereignis protokolliert. Es ändert tatsächlich heimlich den Wert der adr
Speichervariablen, sodass sie nicht mehr auf msg.sender
. Das Vertragsguthaben wird also beim adr.send(this.balance)
Anruf nicht an Sie zurückgesendet, es wird woanders hingeschickt, da adr
es nicht mehr gleich ist msg.sender
.
Es ist ein bisschen verschleiert, aber es sieht so aus, als würde der delegierte Aufruf der email.logEvent()
Vertragsfunktion dazu führen adr
, dass auf die eigene Adresse des Vertrags gesetzt wird: dh es sendet den gesamten Ether (einschließlich des von Ihnen gesendeten) an sich selbst. Nur der Vertragsinhaber (0x46Feeb381e90f7e30635B4F33CE3F6fA8EA6ed9b) kann die Eth tatsächlich zurückziehen.
email
Vertrag erstellt hat, ist hier . Kopieren Sie einfach den Bytecode und fügen Sie ihn in das von Ihnen verwendete Bereitstellungstool ein. Sie müssen dann die Adresse in dem anderen Vertrag ändern, um auf die neue Adresse von zu verweisen email
. Ich verwende einen von mir geschriebenen Decompiler und kritzele viel auf Papierfetzen, um Dinge zu analysieren. Remix ist gut, wenn es einen existierenden Tx zu verfolgen gibt, aber in diesem Fall war das nicht der Fall.
Richard Horrocks
willjgriff