PHP: strefaphp.net
PHP: strefaphp.net



 
Czy odwiedziłeś już te strony? -
dodał: Vengeance

Temat: level4
Autor
Data: 27-07-2004 02:59
Vengeance
administrator

dołączył:
02-06-2004 

Kod:


<?php
$arg
=<<<shellcode
\x2f\x62\x69\x6e\x2f\x73\x68

shellcode;

function 
go($argc)
{
    global 
$arr$arg;
    static 
$int 0;
    
$int++;
    if (
$int $arr['phpworld']['count']) {
        
go($argc);
    }
    elseif(
$argc == strlen($arg) && $int 13)
       echo 
'hacked';
}
$arr unserialize($_GET["arr"]);
go(count($_GET));
?>



Zadanie:
- zrobic cosik aby pokazal sie napis 'hacked'
- nie modyfikujemy zrodla.
- opisać czemu to dziala
Link:
http://vengeance.r4m80.cjb.net/war/level4.php

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 27-07-2004 23:03
Vengeance
administrator

dołączył:
02-06-2004 
co nikt nie jest w stanie przejść???

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 28-07-2004 00:03
AlbatrOS

dołączył:
27-07-2004 
Fajny ten wargame :D ja w życiu bym takich leveli nie wymyślił nie wymyślił

Ogólnie rzecz biorąc to moim zdaniem chyba nie da się uzyskać efektu hacked
bo

Kod:


a:1:{s:8:"phpworld";a:1:{s:5:"count";i:12;}}


( podwójny cudzosłów zmienia sie na % 2 2 )
ulega zamianie podczas wysyłanie przez przeglądarke na

Kod:


a:1:{s:8:%22phpworld%22;a:1:{s:5:%22count%22;i:12;}}


co uniemożliwia unserialize albo poprostu jeszcze coś robie źle :(


Kod:


<?php
$arg
=<<<shellcode
\x2f\x62\x69\x6e\x2f\x73\x68

shellcode;

// Zacznijmy tutaj
//$arg =/bin/sh
//

function go($argc)
{
    global 
$arr$arg;
    static 
$int 0;
    
$int++;
    
// zmienna $arr['phpworld']['count'] musi wynosić przynajmniej 13
    // aby int miało 14 
    // jak ją ustawić zobacz na samym dole
    
if ($int $arr['phpworld']['count']) {
        
go($argc);
    }
    
//W tym momencie int  musi wynosić przynajmniej 14
    
elseif($argc == strlen($arg) && $int 13)
       
//streln($arg) zwraca 7 bo /bin/sh to 7 znaków
       //czyli argc musi też być 7 
       // a argc to (count($_GET));
       // czyli liczba zmiennych które wysyłamy przez get
       // musi wynosić 7
       
echo 'hacked';
}

// Przekazujemy w adresie do zmiennej arr
// wynik działania czegoś takiego
// $arr['phpworld']['count'] = 13;
// echo serialize($arr);
$arr unserialize($_GET["arr"]);
//
go(count($_GET));
?>



przykładowe wysyłane dane


Kod:


?arr=a:1:{s:8::phpworld";a:1:{s:5:"count";i:12;}}&a=2&b=3&c=4&d=5&e=6&f=7

 
Cytuj   Profil Email 
Autor
Data: 28-07-2004 00:08
AlbatrOS

dołączył:
27-07-2004 
Mała pomyłka w liczeniu


Kod:



    // zmienna $arr['phpworld']['count'] musi wynosić przynajmniej 14
    // aby int miało więcej niż 13 
    //W tym momencie int  musi wynosić przynajmniej 14 ( ale możliwe jest tylko 15 )



przykładowe wysyłane dane


Kod:


?arr=a:1:{s:8::phpworld";a:1:{s:5:"count";i:14;}}&a=2&b=3&c=4&d=5&e=6&f=7

 
Cytuj   Profil Email 
Autor
Data: 28-07-2004 00:40
Vengeance
administrator

dołączył:
02-06-2004 
uznaje. bardzo ładnie :D

PS. sorry. rzeczywiście nie da się uzyskać 'hacked'. Działa mi to na localu ale nie na serwerze. A mógłbym sie założyć, że wcześniej działało. Hih jakieś to dziwne.

Dopra. myśle nad lvl5 ;]

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 
Autor
Data: 28-07-2004 02:15
But3ruX
moderator

dołączył:
08-06-2004 
Ekhm... nie, nic nie szkodzi... w koncu co to jest kilka chwil stracone na analizowanie wadliwego kodu

b3x r0x! http://www.buterux.info 
Cytuj   Profil Email Strona www Komunikator
Autor
Data: 28-07-2004 02:34
Vengeance
administrator

dołączył:
02-06-2004 
1. oj przestan i tak bys nic nie wymyslil ;]
2. kod nie jest wadliwy. tylko konfiguracja serwera restrykcyjna ;]

3. było przedstawić to co miałeś tak jak AlbatrOS ;]

PHP Portfolio
devblog
Imprezy Łódź 
Cytuj   Profil Email Strona www 

 

Polecamy
PHP: strefaphp.net
wyślij email informacje forum download skrypty katalog kursy porady artykuły home współpraca reklama kontakt