2010-03-18 23 views
0

Pourquoi mon shellcode est-il tronqué après l'opcode \x20, lorsqu'il est copié par une chaîne à empiler sur un second programme vulnérable?Le shellcode est tronqué par x20

--cmd.exe-- 
char shell[]= 

"\xc7\x44\x24\x0c\x65\x78\x65\x20" ← only this line is put in stack, though hv a enough space 
"\xc7\x44\x24\x08\x63\x6d\x64\x2e" 
"\x31\xc0" 
"\x89\x44\x24\x04" 
"\x8d\x44\x24\x08" 
"\x89\x04\x24" 
"\x8d\x05\xad\x23\x86\x7c" 
"\xff\xd0"; 
--end shell--
+5

Si vous ne pouvez pas répondre à cette question, vous ne devriez vraiment pas jouer avec. :-) –

+0

Hey petit garçon, allez ..: | –

Répondre

1

Transmettez-vous ce shellcode en tant qu'argument de ligne de commande? Dans ce cas, jetez un oeil au code ASCII pour 0x20;)

+0

Tks Raja à Aswer:]) Donc, je passe ceci par une fonction C de l'appel de la bibliothèque kernel32.dll WinExec() et compilé par DEVC++ ..Je suis essayer un Poc à mon propre approfondissement des connaissances ... Qu'est-ce qui ne va pas? –

+0

Oui, ça le ferait; la solution habituelle consiste à entourer l'argument de la ligne de commande avec des guillemets, mais je ne suis pas sûr de savoir comment l'analyseur de ligne de commande traiterait ce cas - après tout, vous n'êtes pas censé passer le code shell comme ça;) –

0

Ma théorie est que des choses comme quote, espace, null, etc. sont interprétées par le shell Windows plutôt que d'être envoyées. Vous pouvez l'échapper d'une manière ou d'une autre, mais je pense qu'il est plus facile d'encoder simplement le shellcode. Essayez donc l'utilitaire msfencode de metasploit pour éviter complètement ces opcodes. Je sais que null (/ x00), space (/ x20) et quote (/ x22) ne peuvent pas être passés directement, mais je suppose qu'il y a d'autres opcodes qui ne peuvent pas être passés aussi bien.

C'est ma solution, mais quelqu'un connaît-il d'autres qui sont meilleurs?

0

Placez un double guillemet autour de la commande entière. Par exemple, exécutez:

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"