Tout d'abord, toute la Team Hackademy vous souhaite une année 2008 pleine de bonnes choses !

Pour débuter cette année, nous sommes heureux de vous annoncer que le Ezine commence à prendre forme (surtout l'équipe qui dirigera celui-ci) et devrait apparaitre sur le Web début Avril. Cela peut paraitre loin mais nous voulons vraiment faire un Ezine de qualité, cela demande donc beaucoup de préparation.

Pour ceux qui aimeraient publier dans le premier numéro il est encore temps d'envoyer vos articles (au pire il seront pour le prochain numéro) directement à redaction@thehackademy.net.

Autre annonce importante, le premier meeting HZV aura lieu le 16 Février 2008 sur Paris (dans les locaux de Sysdream). Celui-ci sera mensuel et aura pour concept de dispenser une formation d'environ 4h sur divers thèmes choisi par la communauté. Le premier thème abordé sera la sécurité VoIP et sera dispensé par CrashFr. Il vous est possible de réserver vos places en formulant votre demande sur meeting@thehackademy.net. Les meeting sont aussi l'occassion pour ceux qui n'auront pas la chance d'assister à la formation de faire des rencontres avec les autres membres de la communauté. Biensur ce meeting est ouvert à tous et gratuit (seul la limite de place disponible peut vous empecher l'accès; alors faites vite !).

Bonne année et n'oubliez pas: HZV will never die !

 FAQ - Rechercher  

jmp $ebp pour BoF

 
The Hackademy Forum Index du Forum -> Hacking/Sécurité (niveau confirmé) Poster un nouveau sujet   Répondre au sujet
Page 1 sur 1
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
jmathon



Inscrit le: 04 Sep 2007
Messages: 11

Message Posté le: Ven Sep 21, 2007 4:25 pm  |   Sujet du message: jmp $ebp pour BoF Répondre en citant
Bonjour,
voilà je suis entrain de m'entrainer à BoF un petit prog

Code:

int main(int argv,char **argc) {
        char buf[256];

        strcpy(buf,argc[1]);
}

Citation:

Starting program: /tmp/vuln AAA[...]AAAAAAAAAAAAAAAAAAABCDE

Program received signal SIGSEGV, Segmentation fault.
0x45444342 in ?? ()
(gdb) i r
eax 0xbfffd5d0 -1073752624
ecx 0xfffffd43 -701
edx 0xbfffd99d -1073751651
ebx 0xb7fe2000 -1208082432
esp 0xbfffd6e0 0xbfffd6e0
ebp 0x41414141 0x41414141
esi 0xb7fe417c -1208073860
edi 0x2 2
eip 0x45444342 0x45444342
eflags 0x10282 66178
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51


Code:

pas de jmp ou call ebp :s

(gdb) disass main
Dump of assembler code for function main:
0x08048384 <main+0>:    push   %ebp
0x08048385 <main+1>:    mov    %esp,%ebp
0x08048387 <main+3>:    sub    $0x108,%esp
0x0804838d <main+9>:    and    $0xfffffff0,%esp
0x08048390 <main+12>:   mov    $0x0,%eax
0x08048395 <main+17>:   sub    %eax,%esp
0x08048397 <main+19>:   sub    $0x8,%esp
0x0804839a <main+22>:   mov    0xc(%ebp),%eax
0x0804839d <main+25>:   add    $0x4,%eax
0x080483a0 <main+28>:   pushl  (%eax)
0x080483a2 <main+30>:   lea    0xfffffef8(%ebp),%eax
0x080483a8 <main+36>:   push   %eax
0x080483a9 <main+37>:   call   0x80482b0 <_init+56>
0x080483ae <main+42>:   add    $0x10,%esp
0x080483b1 <main+45>:   leave


le probleme est que lorsque je debug etc...
En fait, je dois trouver un jmp $ebp mais ou et surtout comment je pourrai faire ?? lol
je précise que je suis sou linux donc pas de findjmp sur une .dll
et que j'ai essayé un code pour trouver un jmp $esp qui me met un segmentation fault :s


Code:
#include <stdio.h>
#define START 0xffffe000
#define END 0xfffff000
#define B1 0xff
#define B2 0xe4
main(){
char *p;
p = (char *) START;
while(p < (char *) END){
        if((p[0] == (char) B1) && (p[1] == (char) B2)){
                printf(" ADRESS = %p\n", p);
}
p++;
}
}


Merci de votre aide
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
toto



Inscrit le: 26 Mar 2007
Messages: 227

Message Posté le: Lun Sep 24, 2007 11:12 pm  |   Sujet du message: Répondre en citant
ok, et depuis quand on dois avoir un jmp ebp ?
pe parle tu du prologue genre :
push %ebp
mov %esp,%ebp
push $0xc,%esp ($0xc, est un exemple)

ici on sauveagrde sur la stack ebp, et on fout esp sur ebp, pour changer de "cadre"

a la fin du programme on fait l'inverse avec la fonction leave

mais exactmeent de quoi parles-tu ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
virtualabs



Inscrit le: 02 Nov 2005
Messages: 9

Message Posté le: Mar Sep 25, 2007 7:43 am  |   Sujet du message: Répondre en citant
Surtout qu'ici le "saved eip" a été écrasé, je ne vois donc pas la nécessité de faire un "jump $ebp".
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
jmathon



Inscrit le: 04 Sep 2007
Messages: 11

Message Posté le: Mar Sep 25, 2007 4:29 pm  |   Sujet du message: Répondre en citant
d'apres ce que j'ai pu lire,
pour moi, il faut que dans $eip il y ait l'adresse de mon buffer ou il y aura le shellcode.
dites moi si je me trompe mais comme je vois qu'il y a 41414141 dans $ebp c'est donc où se trouve mon buffer donc si sur $eip je met une adresse de jmp $ebp il va jumper sur mon buffer et donc si je met des NOP etc... sur mon shellcode. nan ?

j'ai fait un petit schema sur ce que je veux faire :
l'adresse 0x12345678 est celle que je cherche
pile.jpg
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
5m0k3



Inscrit le: 29 Juin 2006
Messages: 118

Message Posté le: Mar Sep 25, 2007 7:16 pm  |   Sujet du message: Répondre en citant
jmathon a écrit:
d'apres ce que j'ai pu lire,
pour moi, il faut que dans $eip il y ait l'adresse de mon buffer ou il y aura le shellcode.
dites moi si je me trompe mais comme je vois qu'il y a 41414141 dans $ebp c'est donc où se trouve mon buffer donc si sur $eip je met une adresse de jmp $ebp il va jumper sur mon buffer et donc si je met des NOP etc... sur mon shellcode. nan ?


Nan, pas besoin de te prendre la tete jump direct sur ton shellcode, ou dans les NOP qui le précèdent.

PS pitite info, tu n'y arrivera jamais si tu désactive pas la random mémoire.

Via:
/proc/sys/kernel/randomize_va_space -> met 0 au lieu de 1 dans ce fichier. pas besoin de rebooter ensuite.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
jmathon



Inscrit le: 04 Sep 2007
Messages: 11

Message Posté le: Mar Sep 25, 2007 9:03 pm  |   Sujet du message: Répondre en citant
ah d'accord,
je vais faire ça alors, retourner sur $esp-X pour arriver direct sur mon buffer.
Mais j'ai souvent vu qu'il fallait utiliser des jmp $esp ou jmp $ebp etc... c'est pour bypasser une protection ou autre chose?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
5m0k3



Inscrit le: 29 Juin 2006
Messages: 118

Message Posté le: Mar Sep 25, 2007 9:19 pm  |   Sujet du message: Répondre en citant
Le jmp $ebp c'est plus sous windows que ca se fait me semble t'il. Pour sauter sur des fonctions dans les DLL chargées par le programme vulnérable. A vérifier.

EDIT: je viens de réfléchir 5 minutes et je crois que je t'ai dit n'importe quoi jmp $ebp ca sert pas a ca. Attends une réponse plus avisée.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
toto



Inscrit le: 26 Mar 2007
Messages: 227

Message Posté le: Mar Sep 25, 2007 11:45 pm  |   Sujet du message: Répondre en citant
jmathon, non pas du tout c'est une vielle technique pour calculer l'adresse de retour, mais oublie la
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
aiolia



Inscrit le: 04 Fév 2008
Messages: 3

Message Posté le: Lun Fév 04, 2008 12:12 pm  |   Sujet du message: Répondre en citant
toto a écrit:
jmathon, non pas du tout c'est une vielle technique pour calculer l'adresse de retour, mais oublie la


Ca ne serait pas plutôt pour les cas où l'adresse de l'endroit où on veut jumper contiendrait des zéros ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
aiolia



Inscrit le: 04 Fév 2008
Messages: 3

Message Posté le: Mer Fév 06, 2008 11:31 pm  |   Sujet du message: Répondre en citant
aiolia a écrit:
toto a écrit:
jmathon, non pas du tout c'est une vielle technique pour calculer l'adresse de retour, mais oublie la


Ca ne serait pas plutôt pour les cas où l'adresse de l'endroit où on veut jumper contiendrait des zéros ?


Et d'ailleurs c'est plutôt jmp esp en principe puisqu'au moment où l'instruction s'exécute la pile a déjà été écrasée et le leave a pushé le SavedEBP dans ebp, or SavedEBP a été écrasé donc un jmp ebp ferait pointer eip dans de la merde non ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Montrer les messages depuis:   
The Hackademy Forum Index du Forum -> Hacking/Sécurité (niveau confirmé) Poster un nouveau sujet   Répondre au sujet

 
Sauter vers:  

Powered by phpBB
Theme modified by mOg & CrashFr
Traduction par : phpBB-fr.com