Solidez Seguridad

Soy nuevo en seguridad de ICO y contratos inteligentes. Tratando de encontrar errores en los contratos verificados. Creo que encontré algunos problemas en 0x42dB5Bfe8828f12F164586AF8A992B3a7B038164 pero no sé cómo retirarlo. ¿Necesito crear una transacción por mí mismo?

Hola. No está muy claro lo que estás preguntando. ¿Nos está preguntando cómo drenar los fondos retenidos por el contrato...?
¿Cómo conociste este y otros contratos similares?

Respuestas (1)

Jaja - muy astuto.

***Advertencia***

Para cualquiera que tenga la tentación de meterse con este contrato , es decir, explotar la falla aparente: es probable que pierda su Ether.

La explicación sigue.

Parece que hay una vulnerabilidad bastante tentadora en la withdrawal()función: cuando envía la función más que LimitWei, le enviará el saldo total del contrato: la cantidad que envió más los 0,36 Eth que ya están allí. Beneficio instantáneo!

Sin embargo , existe este aspecto inocente, pero no obstante peculiar delegatecallde una logEvent()función en un contrato diferente. Para acortar una larga historia, esto no registra un evento. En realidad, modifica furtivamente el valor de la adrvariable de almacenamiento para que ya no apunte a msg.sender. Por lo tanto, el saldo del contrato no le será devuelto por la adr.send(this.balance)llamada, sino que se enviará a otro lugar, ya adrque ya no es igual a msg.sender.

Está un poco ofuscado, pero parece que la llamada delegada a la email.logEvent()función del contrato hace adrque se establezca en la propia dirección del contrato: es decir, envía todo el Ether (incluido el que envió) a sí mismo. Solo el propietario del contrato (0x46Feeb381e90f7e30635B4F33CE3F6fA8EA6ed9b) puede retirar el Eth.

La primera línea de su respuesta implica que el tipo que publicó la pregunta está tratando de hacer una estafa. ¿Realmente pretendías dar a entender esto?
Ah, ya veo. Muy bien :-) +1
No soy un estafador, solo estoy investigando los contratos. ¡Muchas gracias por la conciencia!
@Mike N. En ese caso, bienvenido y no dude en marcar la respuesta como aceptada. Espero haber explicado suficientemente por qué no es una buena idea tener algo que ver con este contrato si no es de su propiedad.
¡Por supuesto! ¿Cómo puedo aceptarlo? Por cierto, he buscado en otros contratos y ¡encontré varios similares! 0x62d5c4a317b93085697cfb1c775be4398df0678c y 0x477D1EE2F953A2F85dbEcBcB371c2613809eA452. Probablemente hay muchos más. ¿Podemos bloquearlos de alguna manera?
Qué hacer cuando alguien responde a mi pregunta tl; dr: haga clic en la marca de verificación junto a la respuesta que desea aceptar.
"¿Podemos bloquearlos de alguna manera?" - esta es la cadena de bloques. A pesar del nombre, no se puede bloquear nada. Es una característica. Si la gente pierde Eth tratando de piratear a los piratas informáticos, no soy tan comprensivo.
Perdón por las preguntas adicionales. He implementado el código de contrato localmente. Pero como no tengo el código fuente de un contrato diferente al que se llama. ¿Cómo puedo implementar este contrato en la red de prueba? Y estos otros dos contratos parecen un poco diferentes. Me gustaría probarlos también... ¿Se depuran las transacciones en Remix?
El Tx que creó el emailcontrato está aquí . Simplemente copie y pegue el código de bytes en cualquier herramienta de implementación que utilice. Luego debe cambiar la dirección en el otro contrato para que apunte a la nueva dirección de email. Uso un descompilador que escribí y muchos garabatos en pedazos de papel para analizar las cosas. Remix es bueno si hay un Tx existente para rastrear, pero no lo había en este caso.
Hola, parece que alguien ha hecho el retiro de los dos contratos anteriores. ¿Alguien podría explicar cómo se hizo?
Parece que alguien está bromeando)) Otro) 0x47000dE9Ac92E29d4Fee617732fFEedc306Bd10E... Entonces, ¿cómo puedo verificar la posibilidad de tomar el éter? ¿Cómo llamas a esta función desde otro contrato?
@Mike N. El autor eliminó el contrato ellos mismos. Sus seguimientos se harían mejor como preguntas nuevas que enterradas aquí.
¡OK! Se movió la discusión aquí: ethereum.stackexchange.com/questions/34708/…