logo

Knowledge Is Power

 
 

- Reinit des nouveaux posts -

- Recherche -

Messages Privés - Derniers posts
S'enregistrer - Login - Liste des membres
Vous logger : Login Pass

Programmation - Langages de Programmation >> les shellcodes Newtopic | Reply
poster txt
Silver Surfer
Inscrit le 18-01-2005
Posté le 20-02-2007 00:17

je suis entrain de lire l article suivant

http://www.ghostsinthestack.org/index.php?idarticle=7

interessant , mais il semble qu il y a des fautes dans ce tuto

par exemple avec ceci

more /usr/include/asm/uinistd.h | grep write

devient

more /usr/include/asm/unistd.h | grep write

j ai un retour a la ligne et aucune info pertinente.

enfin

main:
xorl %eax,%eax //On met à zéro tous les registres, pour éviter les problèmes
xorl %ebx,%ebx
xorl %ecx,%ecx
xorl %edx,%edx
movb $0x4,%al //On met al pour éviter les 0
movb $0x1,%bl
jmp chaine
ret:
popl %ecx
movb $0xd,%dl
int $0x80

chaine:
call ret
.string "Hello World !"

ca foire quand je fais

as -o asm.o asm.s

Dommage , car l article pourrait etre interessant pour s initier.

si vous avez des articles similaires sur la conception de shellcodes , qui fonctionnent ,et sur les buffer overflows, bref de bons tutos , n hesitez pas.
thx
profil | edit | quote
TboWan
Inscrit le 05-10-2004
Posté le 20-02-2007 08:38

Buffer overflow et shellcode, il y a d'abord le mythique :

phrack 49- 0x0e dont on a deux traductions... celle-ci qui est très bonne et celle-là franchement moins bonne...

Sinon, http://fr.wikipedia.org/wiki/Shellcode est très bien aussi (surtout la biblio en bas )
_________________________
http://arsouyes.org
profil | mail | Website | edit | quote
hyatus
Inscrit le 25-08-2001
Avatar
Posté le 20-02-2007 09:56

Yop,

http://taz.lasile.info/TAZ/Coding/C_C++/Buffer_Overflow/

Et certainement l'une des meilleurs doc sur le sujet réalisée par un francophone (en l'occurence le vieux OUAH )

http://taz.lasile.info/TAZ/Coding/C_C++/Buffer_Overflow/advbof.pdf

Source des codes vulnerables et exploits >>
http://taz.lasile.info/TAZ/Coding/C_C++/Buffer_Overflow/advbof.tar.gz

Amuse toi bien.

_________________________
Car la liberte n'est pas un Droit mais un Devoir, et que le savoir apporte la Liberte,alors la TAZ est ce qu'elle est, le reflet de la societe qui nait de ce qu'elle sait... ( hyatus copyleft )

[ Ce Message a été édité par: hyatus le 2007-02-20 09:57 ]
profil | mail | Website | edit | quote
neil
Inscrit le 07-11-2003
Posté le 20-02-2007 14:23

Bah, j'ai pas maté les liens mais déjà t'es mal parti

Déjà tous les tutos sont pleins de fautes, exprès où non, et c'est à toi de les corriger et c'est un très bon exercice. Pour ton grep dans le fichier bah, tu pourrais l'ouvrir pour voir un peu ce qu'il en est ! Genre chez moi ya :

Code:

/* File autogenerated by 'make headers_install' */
#ifndef __ASM_STUB_UNISTD_H
#define __ASM_STUB_UNISTD_H
# if defined __x86_64__
# include <asm-x86_64/unistd.h>
# elif defined __i386__
# include <asm-i386/unistd.h>
# else
# warning This machine appears to be neither x86_64 nor i386.
# endif
#endif /* __ASM_STUB_UNISTD_H *



On voit donc que les en-têtes systèmes ne sont pas les même selon que l'on soit en mode 32 ou 64 bits (je ne sais pas chez toi, à toi de voir). Donc plus qu'à suivre les #include pour retrouver le bon fichier.

Ensuite tu compile un code as avec // pour les commentaire. Bah si tu ouvre le manuel de as (info as) tu constateras que les commentaires se font avec /* */ comme en C.

BTW, si jamais tu avais un problème avec l'instruction de pile c'est peut-être parce que tu es en 64 bits (ce qui expliquerait aussi l'unistd.h). Soit tu modifies le code pour le rendre compatible 64 bits soit tu assemble et linke en 32 bits. Genre pour compiler et linker tu utiliseras :

Code:

gcc -m32 -c -o bla.o bla.c
ld -melf_i386 -o bla bla.o



Doit aussi y avoir moyen avec as.

++

--
Émilien TLAPALE
profil | Website | AIM | ICQ | Yahoo | MSN | edit | quote
castorpilot
Inscrit le 09-03-2005
Posté le 20-02-2007 20:30

Salut,

j'ai pas tout lu l'article, mais deja, le site me semble bien coWboYz
Sinon, un grep sur un more, ça ne m'etonne pas trop que ça foire. Si tu decide d'utiliser more, tu peux faire de la recherche de texte avec la "syntaxe vi", (grosso modo /write).Sinon :
cat /usr/include/asm/unistd.h | grep write
#define __NR_write 4
#define __NR_writev 146
#define __NR_pwrite64 181

Et tu trouve en effet le numero du syscall write.
D'ailleurs, pour avoir un aprecu des syscall disponible, y'a des "tables", genre http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html, qui est pratique, meme si un peu vieille.
Pour les tutos, y'en a eu quelques un de sympa dernierement sur http://neworder.box.sk/ .
profil | edit | quote
Silver Surfer
Inscrit le 18-01-2005
Posté le 21-02-2007 00:52

bien , merci pour les liens (ca va me faire de la lecture )

sinon , jai suivi tes indications neil et ca a bien fonctionne.

j ai continue le tuto , mais encore des erreurs

trance@trancebox:~$ cat ./testasm.c
int main()
{

char sh[] = "\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\x04\xb3\x01\xeb\x05"
"\x59\xb2\x0d\xcd\x80\xe8\xf6\xff\xff\xffHello World !";

asm("jmp %esp");

return 0;
}
trance@trancebox:~$ gcc -o testasm testasm.c
/tmp/ccxfWtYB.s: Messages de l'assembleur:
/tmp/ccxfWtYB.s:25: AVERTISSEMENT:indirect jmp sans « * »
trance@trancebox:~$ ./testasm
pas de Hello World ! mais erreur de segmentation (core dumped)

j ai recompile et lance gdb mais j etais pas plus avance, pas grave, ca m a permis quand meme de voir une methode pour creer des shellcodes . et puis , on peut trouver de nombreux shellcodes deja tout fait sur le net
profil | edit | quote
Trance
Inscrit le 13-04-2007
Posté le 13-04-2007 11:26

Bonjour à tous !

En fait je suis l'auteur de l'article sur les shellcodes provenant de Ghosts in the Stack. Apparamment il contient des erreurs.

La ligne pour obtenir les numéros de syscall est bien, comme Silver Surfer l'a fait remarquer,

Code:

more /usr/include/asm/unistd.h | grep write



Désolé de la coquille.
Cependant, sur certaines distrib, ça ne semble pas fonctionner. Le tuto a été fait sur une Debian. Sur ma Ubuntu Edgy par exemple j'ai la même chose que toi : rien.
(Si vous n'avez pas le fichier il faut installer le paquet libc6-dev.)

En regardant de plus près ce fichier unistd.h :

Code:

/* File autogenerated by 'make headers_install' */
#ifndef __ASM_STUB_UNISTD_H
#define __ASM_STUB_UNISTD_H
# if defined __x86_64__
# include <asm-x86_64/unistd.h>
# elif defined __i386__
# include <asm-i386/unistd.h>
# else
# warning This machine appears to be neither x86_64 nor i386.
# endif
#endif /* __ASM_STUB_UNISTD_H */



Il inclut donc le fichier /usr/include/asm-i386/unistd.h. En faisant un
Code:

more /usr/include/asm-i386/unistd.h | grep write


J'obtiens :
Code:

#define __NR_write 4
#define __NR_writev 146
#define __NR_pwrite64 181


Le numéro de syscall de write est donc 4

Ensuite pour tes autres erreurs, je ne vois pas trop. Quels messages obtiens-tu ?

Sinon, merci de vous intéresser à mes articles. Comme vous le voyez ils peuvent contenir des erreurs et ne sont pas parfaits ! Par conséquent, merci de me prévenir si vous en trouvez. Sur Ghosts In The Stack (http://www.ghostsinthestack.org) nous avons mis en place un système de commentaires et ce n'est pas pour rien C'est vraiment pour obtenir un retour de la part des visiteurs. N'hésitez pas à l'utiliser, il est là pour ça...
profil | Website | edit | quote
Place-Monge
Inscrit le 03-01-2017
Posté le 01-10-2017 17:55

Salut a l'initiateur du Topic

Les shellecodes ....

Il faut essayer de voir ce que tu veux savoir...

Je pense qu'il faut avoir les bases en assembleur..

Je regardes votre code...

Il ya..

Je ne reconnais perso avec ma memoire d'aprentissage concernant le coding en ASM seulement..

1- Les registres...

Amicalement...

Tunisien

[ Ce Message a été édité par: Place-Monge le 2017-10-01 17:57 ]
profil | edit | quote
Place-Monge
Inscrit le 03-01-2017
Posté le 17-10-2017 09:05

Les Shellcodes......

Il faut savoir ce que C'est cet enchainement de

x2chiffres....
1- Avoir la.traduction classique de tous les

x2chifres connus
2-Apprendre a reperer la repetition du x2chiffres.

Tunisien
profil | edit | quote
Place-Monge
Inscrit le 03-01-2017
Posté le 07-11-2017 15:11

Pour ce quu est Shellcodes. LANGAGE DE PROG DE BOOBA

Il Suffit en effet de connaitre

1- La traduction du x2chiffres Connus

2- Reperer la repetition Du x2chiffres

Pour ce qui est ASM LANGAGE DE PROG DE BOOBA AUSSI

EAX
EBX
ECX
Cela.concerne lea Registres

Connaitre la Pile EIP est important aussi..

CA suffit pour tout comprendre.

Savoir lire en anglais Suffit aussi.

Tunisien De Lamaetine
profil | edit | quote
Newtopic | Reply

Online : FloAttaism, FlounfanI, Katrinanum, MiStypom, MiUnloxy, Mizard, Stepceway, Stepwreriak, WayReussy, ZhozefinaComma, Zhozefinafew et 77 Guests


Retour Index NewFFR Repository : http://taz.newffr.com
Cagades à Stick : http://alcane.newffr.com
Forum HTML et Archive -> ici
ForumFR Sql/Xml (2006/04) (SF pas à jour du tout...) - Alive since 2001 Newffr.com
Pour toute plainte ou problème -> Contacter Borax, Hyatus, Tweakie ou Stick par message privé (ou Gueulez sur le forum :) )
Retour haut de page