Java Code Snippets Review

Last updated on

Description

Java Code Snippets Review

Hash length extention attack

import java.util.Base64;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.nio.charset.StandardCharsets;
public class Secure {
  private static String secret = "[...]";

  public static String build_redirect() throws Exception {
    SecureRandom rand = new SecureRandom();
    String tx_id=String.valueOf(rand.nextInt(100000));
    String payment_info = "transaction_id="+tx_id+"&amount=20.00";
    String params = payment_info;
    params+="&sign="+sign_for_payment(payment_info);
    return "https://payment.pentesterlab.com/?"+params;
  }

  public static String sign_for_payment(String payment_info)
              throws Exception{
    String data = secret+payment_info;
    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    byte[] hash = digest.digest(
          data.getBytes(StandardCharsets.UTF_8));
    return Base64.getUrlEncoder()
                  .withoutPadding()
                    .encodeToString(hash);
  }
}

in line number 19, 20 is hashlength.

Pseudo Random Number generator

import java.util.Random;

public class Otp {
  private static final Random R = new Random();

  public static String generateCode() {
    StringBuilder builder = new StringBuilder();
      for (int i = 0; i < 4 ; i++) {
        builder.append(R.nextInt(10));
      }
    return builder.toString();
  }
}

if you get many random numbers you can guess next numbers.