nssctf web 入门(3)

目录

[NISACTF 2022]easyssrf

 [SWPUCTF 2021 新生赛]ez_unserialize

 [SWPUCTF 2021 新生赛]no_wakeup


这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。

想入门ctfweb的可以看这个系列,之后会一直出这个题单的解析,题目一共有28题,打算写10篇。

[NISACTF 2022]easyssrf

[NISACTF 2022]easyssrf

nssctf web 入门(3)_第1张图片

curl网站 curl可以用于向远程服务器发送http请求,并获取服务器的响应

也就是从他的电脑上发送

我们可以通过file://来查看他的文件 file://是文件协议的url在url中使用file:///可以指定本地文件的路径,类似于在操作系统中通过绝对路径访问本地文件。

nssctf web 入门(3)_第2张图片

发现他说查看fl4g我们查看fl4g

nssctf web 入门(3)_第3张图片 

这里显示要我们查看ha1x1ux1u.php

nssctf web 入门(3)_第4张图片

 这里因为通过file_get_content会读取file变量指定的文件,也就是我们通过指定flag文件通过file_get_contents打开并会输出到桌面 所以我们指定file的值为/flag

nssctf web 入门(3)_第5张图片

 [SWPUCTF 2021 新生赛]ez_unserialize

 

[SWPUCTF 2021 新生赛]ez_unserialize

nssctf web 入门(3)_第6张图片

 

nssctf web 入门(3)_第7张图片

 

f12发现disallow

Robots 协议(也称为爬虫协议、机器人协议等)的全称是 “网络爬虫排除标准”(Robots Exclusion Protocol),网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

disallow就是爬虫不能搜索的所以我们去看看robots

nssctf web 入门(3)_第8张图片

 nssctf web 入门(3)_第9张图片

 

admin ="user";     #指定admin的值为user
        $this->passwd = "123456"; #指定passwd的值为123456
    }

        public function __destruct(){ #destruct当对象要销毁时调用
        if($this->admin === "admin" && $this->passwd === "ctf"){  #if判断 admin的值是不是admin passwd的值是不是ctf
            include("flag.php");  #include包含flag 当if判断成立时执行
            echo $flag;           #输出flag     
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo "Just a bit more!";
        }
    }
}

$p = $_GET['p'];   #通过get方法获取p并赋值给p
unserialize($p);   #对p进行反序列话

?>

这里我们要序列话admin 值为admin passwd值为ctf

O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}

nssctf web 入门(3)_第10张图片

 [SWPUCTF 2021 新生赛]no_wakeup

[SWPUCTF 2021 新生赛]no_wakeup​​​​​​

nssctf web 入门(3)_第11张图片

nssctf web 入门(3)_第12张图片 

admin ="user";       #赋值admin user值
            $this->passwd = "123456";   #赋值passwd 123456值
        }

        public function __wakeup(){     #在反序列化后立即调用
            $this->passwd = sha1($this->passwd);  #将passwd的值进行哈希加密
        }

        public function __destruct(){   #当类快要结束时调用
            if($this->admin === "admin" && $this->passwd === "wllm"){  #if判断 admin的值是不是admin passwd的值是不是wllm
                include("flag.php");    #通过include包含flag.php
                echo $flag;             #输出flag
            }else{
                echo $this->passwd;
                echo "No wake up";
            }
        }
    }

$Letmeseesee = $_GET['p'];  #通过get方法获取到p并赋值给Letmeseesee
unserialize($Letmeseesee);  #反序列话Letmeseesee

?>

这里和上面一题差不多就是多了和wakeup对密码进行哈希加密,我们进行绕过处理

漏洞名字叫CVE-2016-7124

O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

CVE-2016-7124绕过影响的版本PHP5 < 5.6.25;PHP7 < 7.0.10
若在对象的魔法函数中存在的__wakeup方法,那么之后再调用 unserilize() 方法进行反序列化之前则会先调用__wakeup方法,但是序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行 

这里我们HaHaHa中有2个对象属性,我们保证序列化字符串中的对象属性大于2就可以绕过wakeup

nssctf web 入门(3)_第13张图片

 

 

 

你可能感兴趣的:(nssctf,web入门,php,开发语言)