qu'est-ce que radare2 est l'équivalent de 'find & system' de GDB, + 9999999, "/ bin/sh" '


4

Quel est l'équivalent de radare2 pour find &system,+9999999,"/bin/sh" de GDB?

En relation avec les techniques ROP/return2libc.

6

D'abord et avant tout, nous devons ouvrir le fichier binaire en mode débogage avec radare2

$ r2 -d file 

La chaîne /bin/sh réside dans la fonction system de libc de sorte que la bibliothèque doit d'abord être chargée à la mémoire afin de vous s pour trouver la chaîne là. Continuons l'exécution du programme jusqu'à son Entrypoint. À ce stade libc devrait déjà être chargé dans la mémoire.

[0xf7f9bc60]> dcu entry0 
Continue until 0x565914a0 using 1 bpsize 
hit breakpoint at: 565914a0 
[0x565914a0]> 

dcu représente d ebug c ontinuer u usqu'à

Pour /bin/sh nous devrions utiliser les fonctions de recherche de radare. Par défaut, radare recherche dans dbg.map qui est la carte mémoire actuelle. Dans notre cas, il n'est pas garanti que /bin/sh sera dans notre carte mémoire actuelle. Par conséquent, nous voulons qu'il recherche dans toute la mémoire des cartes donc nous avons besoin de le configurer:

[0x080483d0]> e search.in = dbg.maps 

Vous pouvez voir plus d'options si vous exécutez e search.in=?. Pour configurer le radare de manière visuelle, utilisez Ve.

La recherche en radare se fait avec la commande /, vous pouvez voir l'énorme quantité d'options de recherche en exécutant /?.

Soit la recherche de /bin/sh pour:

[0x565914a0]>//bin/sh 
Searching 7 bytes from 0x00000000 to 0xffffffffffffffff: 2f 62 69 6e 2f 73 68 
Searching 7 bytes in [0x56591000-0x56592000] 
hits: 1 

<..truncated..> 

Searching 7 bytes in [0xf7d97000-0xf7f66000] 
hits: 1 

0xf7f1180a hit1_2 .b/strtod_l.c-c/bin/shexit 0canonica. 

Et voilà! radare a trouvé la chaîne dans 0xf7f1180a. Pour accélérer les choses, nous pouvons dire à radare de commencer la recherche à system qui se trouve à libc. D'abord, nous avons besoin de l'adresse de system dans libc, nous pouvons le faire avec dmi, puis configurer search.from pour commencer à system.

[0x565914a0]> dmi libc system 
vaddr=0xf7dd3700 paddr=0x0003c700 ord=566 fwd=NONE sz=1126 bind=LOCAL type=FUNC name=do_system 
vaddr=0xf7ebf470 paddr=0x00128470 ord=4988 fwd=NONE sz=102 bind=LOCAL type=FUNC name=svcerr_systemerr 
vaddr=0xf7dd3c50 paddr=0x0003cc50 ord=6919 fwd=NONE sz=55 bind=WEAK type=FUNC name=system 

[0x565914a0]> e search.from=0xf7dd3c50 
[0x565914a0]>//bin/sh 
Searching 7 bytes from 0xf7dd3c50 to 0xffffffffffffffff: 2f 62 69 6e 2f 73 68 
Searching 7 bytes in [0xf7dd3c50-0xf7f66000] 
hits: 1 

<..truncated..> 

0xf7f1180a hit2_0 .b/strtod_l.c-c/bin/shexit 0canonica. 

Et voilà! Maintenant, vous pouvez imprimer la chaîne en utilisant ps @ 0xf7f1180a ou utiliser l'adresse que vous voulez.


0

Merci à David Polverari de radare @ Télégramme

En mode débogage:

e search.in=range 
e search.from=<start_addr> 
e search.to=<end_addr> 

"/ /bin/sh"