Advertisement
chrisversloot

Bad Cookie manipulator ss.week8.BadCookieCrypto

Mar 3rd, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.83 KB | None | 0 0
  1. package ss.week8;
  2.  
  3. /* Importeer de Base64 codec */
  4. import org.apache.commons.codec.binary.Base64;
  5.  
  6. /**
  7.  * Manipuleer een cookie zodat deze adminrechten toekent aan non-admins.
  8.  * @author Christian Versloot
  9.  *
  10.  */
  11. class BadCookie {
  12.    
  13.     /**
  14.      * Voer een manipulatie uit.
  15.      * @param args - runtime args
  16.      */
  17.     public static void main(String[] args) {
  18.        
  19.         /* Leuk gebrabbel */
  20.         System.out.println("Cookie-manipulator is being run");
  21.         System.out.println("[Starting]");
  22.         System.out.println("Busy...........................................................");
  23.        
  24.         /* Genereer een cookie */
  25.         BadCookieCrypto cookie = new BadCookieCrypto();
  26.         String newCookie = cookie.createCookie();  
  27.         System.out.println("Generated cookie with contents " + newCookie);
  28.         System.out.println("Busy...........................................................");
  29.        
  30.         /* Decode de Base64 string naar Bytes */
  31.         byte[] cookieBytes = Base64.decodeBase64(newCookie);
  32.        
  33.         /* Bepaal de index van de laatste byte in de Byte array */
  34.         int laatsteByte = cookieBytes.length-1;
  35.        
  36.         /* Bepaal de key-byte */
  37.         byte key = (byte) (cookieBytes[laatsteByte] ^ (byte)'N');
  38.         System.out.println("Replacing last byte " + cookieBytes[laatsteByte] + " with key " + key);
  39.         System.out.println("Busy...........................................................");
  40.        
  41.        
  42.         /* Bepaal de nieuwe Byte-array d.m.v. de key */
  43.         cookieBytes[laatsteByte] = (byte)((byte)'Y' ^ key);    
  44.  
  45.         /* Encode de gemanipuleerde cookie */
  46.         newCookie = Base64.encodeBase64String(cookieBytes);
  47.         System.out.println("The new manipulated cookie is " + newCookie);
  48.         System.out.println("Busy...........................................................");
  49.         System.out.println("[Final check] The non-admin is now admin: " + cookie.isAdmin(newCookie));
  50.         System.out.println("[Finished]");
  51.     }
  52.    
  53.    
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement