Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » C & Cie. » Impossible d'éxécuter un shellcode

IoNAce
ProgBoarder
Citer Non détecté Msie 7.0 - Posté le 28/02/2008 à 20:24
Salut à tous (sourire)

Je suis en ce moment sur la rédaction de shellcodes. Mon problème vient du fait que je n'arrive pas à les tester. Après avoir parcouru le net, je suis tombé sur quelques codes en C afin de les tester mais je n'y arrive pas, rien ne fonctionne :'(
J'essaye même de les debug avec gdb mais je n'obtiens rien de concluant.
Je vous donne les différents code que j'ai testé avec les shellcodes donnés par leurs auteurs (ce ne sont pas les miens pour le moment).

PS : ma machine est sous Debian Etch noyau 2.6.18-6-686

Merci (cool)



Wall (147) : Afficher le code source - Ouvrir dans une nouvelle fenêtre
Freem
Modérateur
RemonterCiter Windows XP Firefox 2 - Posté le 29/02/2008 à 13:16
Si tu nous en disais plus?
Je sais pas, moi...
Tu as un message d'erreur?
Il réagit en plantant?
Ou toute autre chose pour laisser une piste aux linuxiens du coin xD
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin
IoNAce
ProgBoarder
RemonterCiter Non détecté Msie 7.0 - Posté le 29/02/2008 à 13:57
Hello (cool)

C'est très simple en fait. La plupart des shellcodes se contentent d'écrire sur <stdout> un simple bonjour ou alors d'exécuter un /bin/sh, toujours pour illustrer leurs fonctionnements.
Il n'y a aucune erreur apparente dans les codes sources que j'ai déposés, par contre le 3e exemple ne compile tout simplement pas (gcc 4.1.1-21). A noter que le premier exemple, si j'arrive a la compiler, me renvoi une erreur type 0340 ( (gêné)) quand je le debug avec gdb.

Je suis pas un pro Linux, j'essaye juste d'apprendre et j'avoue que la je suis largué. Y aurait il une protection du stack frame sur debian ? Il me semblait que c'était seulement à partir du noyau 2.6.19 que c'était inclus dans la distrib' .... (triste)
Bref je patauge là (eek)

Merci d'avance (surpris)

Edité par IoNAce ( 29/02/2008 13:57:27 )
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 29/02/2008 à 21:38
Bonjour,

le premier code que tu donnes dépend énormément du compilo. En effet, tu supposes qu'en sautant à l'adresse contenu dans ESP tu ais le shellcode. Bref, rien d'étonnant pour moi.

Le second dépend de la manière dont est gérée la pile. Je ne l'ai pas testé, Mais peut marcher. Par exemple, je pense que l'option -fomit-frame-pointer peut changer notablement le comportement du programme.

Le troisième est celui qui est le plus "portable", dans le sens où il ne dépend plus du compilo, mais seulement de la plateforme d'execution. Et chez moi, il marche.
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
IoNAce
ProgBoarder
RemonterCiter Non détecté Autre - Posté le 02/03/2008 à 22:47
Salut,

Merci pour cette réponse. Je me doutais bien que les 2 premières solutions avaient des résultats très aléatoires. La troisième me parait plus probable mais le seul problème c'est qu'il ne compile tout simplement pas (triste)

Sortie de gcc :

ionace@|_-=:Perceval:=-_|:~/Dev/ASM/Shellcode$ gcc test_shell.c -o test_shell
test_shell.c: In function ‘main’:
test_shell.c:49: error: expected ‘)’ before ‘*’ token


Si ça te dit quelques chose (triste)


Edité par IoNAce ( 02/03/2008 22:49:22 )
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 02/03/2008 à 23:07
Peux tu mettre sur le wall le fichier que tu essais de compiler ? Car là, comme ça, difficile de répondre, étant donné que je ne sais pas ce que contient la ligne 49 du fichier test_shell.c

Sinon, pour moi, il compilait sans problème. J'ai juste fait un copier coller du dernier programme que tu donnes dans un fichier.

[edit]
De plus, et sans vouloir t'offenser, le problème que tu rencontres est lié à ton programme en C, et non au shellcode. Si tu n'arrives pas à corriger un simple programme, je ne sais pas si c'est judicieux de se lancer dans les shellcodes, qui est un sujet relativement compliqué.
[/edit]

Edité par Francesco ( 02/03/2008 23:09:27 )
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
IoNAce
ProgBoarder
RemonterCiter Non détecté Mozilla 5 - Posté le 03/03/2008 à 16:38
Salut

Le programme est déjà sur le wall (cf mon premier post), juste que mon source a plus d'espace et de commentaires que sur celui du wall. Dans tous les cas, la ligne 49 correspond à ceci :


void (f*) () = (void *) sh;



Pour ta remarque, je ne suis pas vexé tout simplement parce que je ne vois pas le lien (confus)
Je programme déjà en assembleur (Freem pourra te le confirmer) et je n'en suis plus vraiment à mon premier programme C. La réalisation de shellcodes m'intéresse, j'arrive à les créer mais pas à les compiler (tu me diras comment tu sais que tu les a créé alors (langue)). Je n'exécute pour l'instant que des fonctions de bases (genre "hello world"), je souhaite approfondir mais je ne peut les tester, d'où mon problème.
Je comprend parfaitement le code que j'essaye de compiler mais je ne comprend pas la réaction de gcc, tout me semble approprié et pourtant non (eek)

Mon problème vient uniquement de là, pas de la conception des shellcodes ^^

[edit]
Non bon c'est bon en fait, tout marche à merveille, c'était juste la syntaxe qui était foireuse (diable)
Tu l'as modifié toi avant de compiler ? Parce que l'erreur venait de là en fait... fallait juste intervertir le * après pour le mettre devant ...
[/edit]

Edité par IoNAce ( 03/03/2008 16:48:03 )
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 03/03/2008 à 18:23
Maintenant que tu me le dis, c'est vrai que j'ai changé le f* en *f. Mais j'ai fait ca tellement machinallement que je l'ai très vite oublié. Désolé (langue)
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Freem
Modérateur
RemonterCiter Windows XP Firefox 2 - Posté le 04/03/2008 à 09:27
Pour ce qui est de l'asm, vi, je confirme (sourire)
Pour ce qui est du C, de même (sourire)
Mais c'est pas parce que je t'ai débauché de ton site que tu peux me prendre à partie comme ça, lol (cool)
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin
IoNAce
ProgBoarder
RemonterCiter Non détecté Mozilla 5 - Posté le 05/03/2008 à 00:28
Francesco => pas de soucis, j'aurais dû regarder avant, j'ai fait le boulay sur ce coup là.
Merci à toi en tout cas pour le temps que tu a pris pour me répondre.

Freem => (langue) (langue) (langue)
No comment (héhé

Merci à vous en tout cas (cool)

Edité par IoNAce ( 05/03/2008 00:29:01 )

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,086 s - Crédits - Stats
1 connecté