Poster un commentaire - Retour à l'article
Cluedo, le 16/07/2008 :
Ok pas de souci!
Dans son article il a rédigé également un annexe dédié au ret-into-libc.
Pour le code source qui se charge de trouver la chaine, j'aurais pensé à un truc du genre :
/*** cut here ***/
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
char *address;
address = getenv(argv[1]);
printf("%s à l'adresse %p\n", argv[1], address);
return (0);
}
/*** cut here ***/
Voilou, pourriez svp me détailler vos codes, notamment sur le choix des adresses suivantes :
/***
addr_b = 0xbfffffff - strlen(argv[1]) - 2;
dif = (int) addr_b - (int) (env[i-1] + strlen(argv[2]) + 1);
***/
Merci encore, bonne soirée!
Réponse :
En fait mon code recalcule l'adresse du /bin/sh exporté en variable précédemment, cet argument est placé en bas de la pile. Seul un argument placé plus bas peut varier, c'est le PATH. Sous linux (tout du moins pour notre exemple) l'adresse du bas de la pile est à 0xbfffffff. Le dernier argument de l'environnement est justement ce PATH (le env[i-1]), le but est donc de trouver la variation possible entre le PATH courant et le PATH qui sera utilisé dans l'attaque. Bon je l'avoue le code est barbare et très peu lisible, je l'ai mis parce que je l'avais utilisé mais surtout pour montrer qu'on peut placer une string que l'on veut dans un exécutable (en mémoire) et la trouver à une adresse générique... Ce qui nous aide fortement pour l'exploitation :-p
J'espère avoir répondu à ta question et te souhaites une bonne soirée !
Heurs
Cluedo, le 15/07/2008 :
Bonjour,
Je trouve dommage que vous ne citez pas vos sources, ou vos références.
On dirait même un résumé de l'article de Clad-Strife (http://ivanlef0u.free.fr/repo/zines/n0name-mag/papers/ret-onto-ret.txt), sans le même code source pour trouver l'adresse de notre chaine.
Bon article celà-dit, à reprocher juste le peu d'explication à la fin sur votre code source. Plusieurs commentaires auraient été les bienvenus!
Sur ceux, bon courage ;-)
Réponse :
C'est vrai que j'ai déjà vu l'article de clad (qui est un bon article !). J'avoue aussi zapper pas mal les références (Trance peut confirmer ma négligence), pas par volonté mais par oublie. En tout cas ne t'inquiètes pas on essaye pas de cacher des sources pour faire genre "J'ai trouvé ca tout seul !", bien au contraire, j'ai pas trouvé ca tout seul et je dirais même que si on ne me l'avais pas mis un tel exemple sous le nez je l'aurai pas inventé.
PS: l'article de clad était dans les références mais il semblerait que le serveur l'hébergeant n'existe plus... Soit, je mets le lient à jour ;-)
PS2 : je suppose que tu parlais du ret onto ret et non du ret into libc....
Heurs
Les commentaires sont soummis à certaines règles, qui sont une question de bon sens.
Utilisez-les à bon escient. Vous pouvez donnez votre opinion, vos critiques, nous signaler des fautes, apporter des précisions. Vous pouvez également nous poser des questions ; nous essaierons de vous répondre dans la mesure du possible.
Ne confondez pas commentaires et forum ; votre commentaire doit être en rapport avec l'article. Si vous souhaitez donner un commentaire général sur le site, envoyez-nous plutôt un mail.
Merci de nous laisser votre adresse e-mail, afin que nous puissions vous recontacter si besoin. Le code HTML n'est pas interprété dans les commentaires.
Les commentaires sont soummis à une validation des administrateurs. S'ils ne respectent pas ces règles, ils seront systématiquement refusés. Merci de votre compréhension ;-)