[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/securityphoenix/JavaDeserH2HC/master/ForgottenClass.java [Back]  [Original]

import java.io.IOException;
import java.io.Serializable;
import java.util.Map;

/**
 * Um dos gadgets usados no exemplo didtico que demonstra como desviar o
 * fluxo de execuco durante a desserializao (utilizando Dynamic Proxy).
 * Esse gatget invoca um mtodo de um campo (map.entrySet()) e, por isso,
 * pode ser usado como trampolim para o mtodo invoke() de classes que implementem
 * InvocationHandler. No exemplo da revista, o fluxo ser desviado para a classe
 * SomeInvocationHandler, que contm um cdigo que se deseja alcanar.
 *
 * -----------------------------------------------------------------------
 * Mais detalhes na 12a edio da H2HC (hackers to hackers) magazine:
 * https://www.h2hc.com.br/revista/
 * -----------------------------------------------------------------------
 *
 * @author @joaomatosf
 */
public class ForgottenClass implements Serializable {

    private Map map;

    // magic method executado automaticamente durante a desserializacao
    // de objetos deste tipo. Repare que  acessado um mtodo de um camop
    // controlado pelos usurios (map.entrySet())
    private void readObject(java.io.ObjectInputStream in)
            throws IOException, ClassNotFoundException{
        in.defaultReadObject();
        System.out.println("-------------------------------------------");
        System.out.println("The flow is in ForgottenClass.readObject()");
        map.entrySet();
    }

    // outro magic method invocado automaticamente durante a desserializao
    private Object readResolve(){
        System.out.println("-------------------------------------------");
        System.out.println("The flow is in the ForgottenClass.readResolve()");
        return null;
    }

    // mtodo qualquer, que no  invocado durante a desserializao.
    private void anotherMethod(){
        System.out.println("The flow is in ForgottenClass.anotherMethod()");
    }
}

Web Proxy Viewer  |  New URL  |  Original Page