Au lendemain de l'article sur les .bss overflow posté par mon ami HyP sur son blog , j'ai eu envie de voir comment bypasser l'authentification de son "Sysinfos" mais avec une approche différente .
Bon , aprés coup je me suis vite rendu compte que ce serait trés classique voir presque triste , je le reconnait mais 24h aprés la publication de son article , ça me tenter donc ...
Code de Sysinfos.c ici
Premiere étape comme souvent , on désassemble a la recherche d'une ou plusieurs intructions intéréssantes ( ici avec objdump) de cette maniere :
objdump -d Sysinfos
et...bingo !
Aprés avoir parcouru les lignes ,on se rend vite compte de la simplicité de la chose lorsqu'on tombe sur un JNE (Jump if Not Egal ) intéréssant.
...........................................
...........................................>
8048410: 55 push ebp
8048411: 89 e5 mov esp,ebp
8048413: 53 push ebx
8048414: 83 ec 04 sub 0x4,esp
8048417: 80 3d bc 98 04 08 00 cmpb 0x0,0x80498bc
804841e: 75 40 jne 8048460 <__do_global_dtors_aux+0x50>
;saut au destructeur si valeur inégale
<..........................................
..........................................
Reste plus qu'a l'éditer a l'aider d'un éditeur hexadécimal pour en modifier la valeur sachant que l'on doit remplacer la valeur 75 par 74 .
Nous avons jne = 75
Nous allons faire en sorte d'obtenir je = 74
Editons donc a l'aide (par exemple ) de Ghex .
Ghex2 Sysinfos
On va rechercher la valeur hexa 75 40 et hop , y'a plus qu'a modifier , enregistrer, faire un chmod +x Sysinfos et lancer le prog pour vérifier.
[root@localhost kmkz]# ./Sysinfos2 i
Vérification de votre mot de passe..
'+) Authentification réussie...
U'r root!
sh 3.0 #
Et voila , le Sysinfos est encore une fois bypasser et ce d'une façon des plus élémentaire mais c'était " just for fun " ;-) .