App - Système

mercredi 7 février 2018, 21:12  #1
App - Système - ELF ARM - Basic Buffer Overflow
4br3mm0rd
  • 4 posts

Bonjour,

Je suis en train d’avancer dans le buffer overflow. J’ai écrit une payload dans "/tmp/a" qui est censée contenir un shellcode (qui fait un cat du fichier .passwd) et qui effectue le buffer overflow pour overwriter "pc".

Je me dis qu’en utilisant GDB, je peux tester ma payload sans ASLR. Ca me permet de savoir où viser en connaissant déjà l’adresse de mon buffer (pour quand j’overwrite PC). Cependant, le code a tendance à avoir une part d’aléatoire dans son exécution. Dans la photo jointe, on voit que j’exécute 2 fois le programme dans GDB avec mon input (les adresses sont d’ailleurs les mêmes), pourtant, on voit que dans le premier cas, j’ai un SIGILL, et dans le deuxième, mon shell est exécuté...

Pouvez-vous m’aider à comprendre ce qu’il se passe ?

Merci !


vendredi 23 février 2018, 13:45  #2
App - Système - ELF ARM - Basic Buffer Overflow
HammerHead
  • 1 posts

Hum tu as bien de la chance, moi je n’arrive meme pas a executer gdb.... du coup c’est chaud pour voir mes registres .... je sais pas pourquoi ca marche pas j’ai :

Starting program : /challenge/app-systeme/ch45/ch45
Cannot parse expression `.L1185 4@r4’.
warning : Probes-based dynamic linker interface failed.
Reverting to original interface.

Error while running hook_stop :
No symbol "disassembly" in current context.

Breakpoint 1, 0x000103f4 in main ()

J’ai l’habitude de faire du reverse sur x86 mais pas arm, je dois faire qqch de faux.... Bon pour quand meme tenter de t’aider, tu as tenté de sauter dans une NOP slope pour t’aider ? ou tu tente de sauter directement à l’adresse de ta payload (shellcode) ?

Hésite pas si tu sais pourquoi mon gdb fait des siennes....