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
|