2017-04-07 1 views
0

Je la décharge ci-dessous du gdbles fonctions d'appel C shellcode

00000000004006f6 <win>: 

4006f6:  55      push rbp 
4006f7:  48 89 e5    mov rbp,rsp 
4006fa:  bf 98 08 40 00   mov edi,0x400898 
4006ff:  e8 8c fe ff ff   call 400590 <[email protected]> 
400704:  5d      pop rbp 
400705:  c3      ret 

Habituellement, cette fonction C est jamais appelé mais je dois écrire un peu shellcode des thats moins de 10 octets pour l'exécuter ou d'obtenir la valeur affichée. Voici la source de la fonction; Je suis toujours novice à la fois en assemblage et en C, donc toute aide est appréciée.

+0

10 octets? Le paramètre de chaîne a plus de 10 octets. Je ne comprends pas. – ThingyWotsit

+0

C'est ce que je suis confus, apparemment il ya un moyen de manipuler l'eip pour appeler la fonction. Im à une perte de ce qu'il faut faire à ce stade. – LuckyMuffin

Répondre

-1

mov eax, (victoire adr)

appel EAX

objdump opcodes après

0

Pour exécuter la fonction win() que vous devez faire écrire push <function-win-address> ret dans shellcode.

Dans votre cas, ce sera: \x68\xf6\x06\x40\xc3

\x68 est push

\xf6\x06\x40 est l'adresse de la fonction

\xc3 est ret