PHP反序列化题型_绕过preg_match1 <?phphighlight_file(__FILE__);include('flag.php');$cs=file_get_contents('php://input');classctfshow{public$username='xxxxxx';public$password='xxxxxx';publicfunction__construct($u,$p){$this->username=$u;$this->password=$p;}publicfunctionlogin(){return...
}$tmp="test";$username=$_POST['username'];$password=$_POST['password'];$a=serialize(newUser($username,$password));if(preg_match('/flag/is',$a))die("NoNoNo!");unserialize(read(write($a))); 首先为了能够访问hint.php,我们需要绕过__wakeup()函数,不然hint变量会被赋值为表情符号。 这里的...
$a = serialize(new User($username, $password)); if(preg_match('/flag/is',$a)) die("NoNoNo!"); unserialize(read(write($a))); 首先为了能够访问hint.php,我们需要绕过__wakeup()函数,不然hint变量会被赋值为表情符号。 这里的绕过其实简单,因为如果序列化字符串中声明的变量数量大于实际的变量数量...
php$function= @$_GET['f'];functionfilter($img){$filter_arr=array('php','flag','php5','php4','fl1g');$filter='/'.implode('|',$filter_arr).'/i';returnpreg_replace($filter,'',$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user"] ='guest';$_SESSION['function'] ...
__construct和__destruct的魔术方法是默认执行的,我们可以忽视他们,__wake up执行以后会返回当前主页上,需要绕过,下面的正则匹配preg_match也需要绕过,flag在f14g.php里 绕过之后就需要传个var的值,值为base64编码以后的序列化 __wakeup()魔术方法 unserialize()会检查是否存在一个__wakeup()方法。如果存在,则会...
if(preg_match("/flag/",$file)) { echo "不能现在就给你flag哦"; exit(); } else{ include($file); $password = unserialize($password); echo $password; } } else{ echo "you are not the number of bugku ! "; } ?> 首先要注意: ...
这里我们注意到使用了 unserialize() 函数,这时候考虑使用 PHP 反序列化。源码通过 preg_match() 匹配了 flag 关键字,也是说无法在 index.php 中输出 flag.php 的内容。这里的关键在于 hint.php 中的 Flag 类,类中定义的 tostring() 方法会输出文件的内容。
}elseif(isset($_GET['name']) &&isset($_GET['content'])){if(preg_match('/ph/i',$_GET['name'])){var_dump($_GET['name']);die('over'); }elsefile_put_contents('/var/www/html/'.$_GET['name'],$banner.$_GET['content']); ...
php$txt=$_GET["txt"];$file=$_GET["file"];$password=$_GET["password"];if(isset($txt)&&(file_get_contents($txt,'r')==="welcome to the bugkuctf")){echo"hello friend!";if(preg_match("/flag/",$file)){echo"不能现在就给你flag哦";exit();}else{include($file);$password=unseria...
这里先对它进行了正则,这个正则的意思是匹配除了a-zA-Z0-9_之外的字符,因为 “^” 符号是在 “[]” 里面,所以是非的意思,不是开始的意思,preg_match只能处理字符串,当传入的subject是数组时会返回false,所以我们传入数组可以绕过 注:这里传数组的payload,闭合就和直接传字符串不一样,上面简单示例的payload是"...