【攻防世界】网鼎杯2018 Web fakebook

news2024/9/28 5:28:43

学web总是能让我学到新的知识,很开心,很有趣,很好玩
打开题目
在这里插入图片描述
一个登录按钮,一个注册按钮,其余没有什么发现,对于web来说,常规先测试一下robots.txt文件
在这里插入图片描述
果然又发现,有一个bak文件,我们下载下来看看
在这里插入图片描述
我一看,这不又是序列化的题吗?是可以执行curl命令的,但是现在还没有什么头绪,我们先注册一个账号看看
在这里插入图片描述
也没有什么信息,我们点进admin看看
在这里插入图片描述
乍一看没什么思路,我们看一下源代码
在这里插入图片描述
这里给了一个链接说是博客页面,猜测就是这里使用了curl获取页面,暂时还不知道怎么利用,我们再看看有没有什么能提供思路的地方
看了看,发现链接可能存在sql注入
在这里插入图片描述
我们尝试注入一下,测试了一下,确实存在注入点,当我们输入1 and 1=1#页面正常显示
在这里插入图片描述
但当我们输入1 and 1=2#时,页面就报错了
在这里插入图片描述
确定存在注入点,我们看看有几个字段
在这里插入图片描述
使用联合查询的时候,waf把我们拦截下来了,尝试一下使用注释绕过
在这里插入图片描述
成功绕过了,并且测试字段数量为4,因为为5的时候,页面就报错了
我们先查询一下当前的数据库名字
在这里插入图片描述
注意,查询的时候要把1改为-1才行,查询到数据库名字为fakebook
我们乘胜追击,查一下他的表名
在这里插入图片描述
查出来表名为users,我们再看看他有些什么字段
在这里插入图片描述
分别有no,username,passwd,data,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS这些字段,我都看过了,只有data字段有点用,我们把data字段的数据取出来看看
在这里插入图片描述
是一段序列化后的字符串,那思路就很明确了,我们需要反序列化他,传入恶意的代码
我们分析一下最早拿到的php文件

<?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);
    }

}

我们一个一个分析
get函数:会传入一个url值,就是我们输入的blog值,然后会curl这个url,把url返回的内容输出到页面上,curl是可以使用file协议来包含文件的
get里面的几个curl函数解释如下

curl_init:初始化新的会话,返回 cURL 句柄,供curl_setopt()、 curl_exec() 和 curl_close() 函数使用。
curl_setopt:为 curl 会话句柄设置选项。
curl_exec:执行给定的 curl 会话。
curl_getinfo:获取最后一次传输的相关信息。

然后我们再看看
isValidBlog函数:对我们注册时传入的blog值进行过滤,不然我们注册的时候就可以直接用file伪协议进行文件读取了

了解了代码都是干嘛的之后,我们就可以构造php序列化字符串了
根据之前报错显示出来的路径为/var/www/html/view.php,我们可以构造下面的代码

<?php

class UserInfo
{
    public $name = "abc";
    public $age = 123;
    public $blog = "file:///var/www/html/flag.php";
}
$a=new UserInfo();
echo serialize($a);

找一个php解释器运行一下就可以得到一串序列化字符串了
然后用这串字符串sql注入
在这里插入图片描述
我们再看看源代码
在这里插入图片描述
成功返回了flag.php的内容,我们把它使用base64解码一下,就可以得到flag了
在这里插入图片描述
但这题好像没有禁用load_file函数,所以,直接使用no=-1 union/**/select 1,load_file(‘/var/www/html/flag.php’),3,4就可以直接做出来
哈哈哈哈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv-python常用函数解析及参数介绍(二)——图像填充与图像融合

1.图像填充 函数及参数介绍 在opencv中使用cv2.copyMakeBorder可以进行图像的边界填充&#xff0c;需要的参数为(img, top_size, bottom_size, left_size, right_size, borderType&#xff09;&#xff0c;即&#xff08;图片&#xff0c;上侧填充值&#xff0c;下侧填充值&a…

【数据结构与算法】KMP算法

文章目录前言一 .KMP的来历二.KMP解决的问题1.引入2.定义的引入1.字符串前缀2.字符串后缀3.最长相等前后缀3.核心思想三.next/prefix1.next的含义定义规律2.next的求取1.准备工作2.思路和图解4.应用前言 在C语言的strcmp的实现过程中&#xff0c;所涉及的算法较为简单&#xff…

Golang - 字符串操作汇总

Golang 字符串操作汇总1 string初始化2 遍历string3 byte & Rune3.1 初始化3.2 byte和rune区别1 string初始化 func newString() {//1. 字符串初始化// 方式一&#xff1a;使用简写声明&#xff0c;带有字符串的变量,支持特殊字符str : "one hello \n world"fmt…

三个月后,快手To B怎么样了?

未来&#xff0c;如何独立作战和走出快手的TOC“客户资源圈”&#xff0c;或将成为快手TOB新的十字路口。 作者|斗斗 编辑|皮爷 出品|产业家 人口红利终结&#xff0c;流量红利终结&#xff0c;超常规的高速增长终结。TOC模式的路越来越难走了。 快手与抖音作为短视频…

光耦特性以及计算

光耦特性 光耦器件电路图 这是我们常用的。光耦器件以及它的连接方式。 左侧R1是我们主要考虑的。 电流最小值是要让LED能够保持发光状态&#xff0c;最大值的话。1.不能让LED烧坏了。2. LED的负极端是单片机的。 这里主要是看引脚灌入电流的最大值。 电气规格 我们看看说…

手机数据包抓包详解

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是手机数据包抓包详解。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设…

并发编程——6.共享模型之不可变

目录6.共享模型之不可变6.1.日期转换的问题6.1.1.问题提出6.1.2.解决思路——同步锁6.1.3.解决思路——不可变6.2.不可变设计6.3.享元模式6.3.1.简介6.3.2.体现6.3.3.DIY6.4.final 原理6.5.无状态本文笔记整理来自黑马视频https://www.bilibili.com/video/BV16J411h7Rd/?p197&…

Unity脚本(二)

视频教程&#xff1a;https://www.bilibili.com/video/BV12s411g7gU/?share_sourcecopy_web Transform 对象的位置、旋转和缩放 场景中的每个对象都有一个Transform&#xff0c;用于存储和操作对象的位置、旋转和缩放。 每个Transform都可以有一个父级&#xff0c;能够分…

C语言强制类型转换

强制类型转换是把变量从一种类型转换为另一种数据类型。例如&#xff0c;如果您想存储一个 long 类型的值到一个简单的整型中&#xff0c;您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型&#xff0c;如下所示&am…

gitlab-ci.yml关键字(五)tags 、only 、when

tags 使用Tags用于选择Runner的标签列表 我们在创建Runner 时可以给该Runner打上特定的标签&#xff0c;那后续流水线中的job如果需要使用特定标签的Runner执行时&#xff0c;就需要使用tags来标记 比如这里有两个标签的Runner 也可以对当前的runner进行一些配置上的设置 …

2022总结:我是怎样从一个混子到如今小有所成

前言 &#x1f340;作者简介&#xff1a;被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 &#x1f341;个人主页&#xff1a;红中 &#x1f342;抽根烟&#xff0c;吹个牛b(不是 入门 如果硬要问我是在什么时候入门的&#xff0c;那就要说到高一…

MySQL添加用户及用户权限管理

目录 1、用户 <1> 用户信息 <2> 创建用户 <3> 删除用户 <4> 修改用户密码 2、用户权限管理 <1> 查看用户权限 <2> 给用户授权 <3> 回收权限 1、用户 <1> 用户信息 MySQL中的用户&#xff0c;都存储在系统数据库mysq…

机器翻译与数据集

机器翻译指的是将文本序列从一种语言自动翻译成另一种语言。 使用单词级词元化时的词表大小&#xff0c;将明显大于使用字符级词元化时的词表大小。为了缓解这一问题&#xff0c;我们可以将低频词元视为相同的未知词元。 通过截断和填充文本序列&#xff0c;可以保证所有的文…

【LeetCode每日一题】——154.寻找旋转排序数组中的最小值 II

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【题目进阶】九【时间频度】十【代码实现】十一【提交结果】一【题目类别】 二分查找 二【题目难度】 困难 三【题目编号】 154.寻找旋转排序数组中的最小…

windows下OpenCV安装教程以及vs2019配置opencv教程

文章目录一. OpenCV下载二. OpenCV安装及配置三. VS2019项目配置OpenCV一. OpenCV下载 官网地址&#xff1a;Home - OpenCV 下载地址&#xff1a;OpenCV download | SourceForge.net 二. OpenCV安装及配置 双击下载好的安装包进行安装 安装过程实际上是一个解压过程 选择…

java开发机动车考试驾照考试-科一科四考试在线题库系统

简介 本系统主要是进行科一科四考试和练习的网上考试系统&#xff0c;分为A1B1、A2B2、C1C2的科一科四考试系统&#xff0c;当学员点击开始考试&#xff0c;系统将自动生成随机题目100道&#xff08;选择题80道&#xff0c;判断题20道&#xff09;的试卷&#xff0c;考试时间4…

【数据结构】LeetCode移除元素、删除排序数组中的重复项、合并两个有序数组

目录 一、移除元素 1、题目说明 2、题目解析 二、删除排序数组中的重复项 1、题目说明 2、题目解析 三、合并两个有序数组 1、题目说明 2、题目解析 一、移除元素 1、题目说明 题目链接&#xff1a;移除元素 给你一个数组nums和一个值val&#xff0c;你需要原地移除所有数值等…

php宝塔搭建部署实战彩纸屋在线少儿编程系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的彩纸屋在线少儿编程系统源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#x…

第一个完整的CMake工程

第一个完整的CMake工程一、概述二、准备工作2.1 创建工程2.2 创建源码目录三、换个地方保存目标二进制文件3.1 add_subdirectory 指令说明3.2 重设目标二进制生成目录四、如何安装4.1 目标文件的安装4.2 普通文件的安装4.3 非目标文件的可执行程序安装(比如脚本之类)&#xff1…

git 源码下载安装最新版本

问题 用yum install git 下载后查看版本 git --version 显示的版本太低&#xff0c;自己去github下载比较新的版本 解决 https://github.com/git/git/tags 查看最新的版本&#xff0c;并且复制tar.gz下载链接 wget 你复制的链接 我的例子&#xff1a;wget https://github.…