这道题目登录之后我们可以看到有join和login

login即登录,join即注册

我们通过查看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);
} }

可以看到泄露的是UserInfo这个类的源码,看其他师傅们的WP可以知道还可以扫出来flag.php的存在。

curl_exec — 执行一个cURL会话

因为我们要传递自己博客的网址,所以猜测这里是否能够通过file协议读取绝对路径下的文件。

接着在join里面虽然我们要输入自己博客的网址,但是其进行了非常严格的正则表达式过滤,所以想在这个位置运用file协议基本上是不可能了。

我们注册一个账号看看

注册成功即登录,可以看到我们输入的信息可以看到

这里就是我们输入的博客网址的地方,不过在join的时候如果输入除http/https以外的关键词就会被检测出来,所以我们点击test用户看是否有突破点

可以看到view.php后面的参数no,这里让我们很容易想到该地点是否存在SQL注入漏洞

简单测试一下

输入了and 1=2之后,页面报错,数字型注入,同时页面返回来网站的绝对路径,这正是我们需要的。

接着我们进行常规注入操作,不过因为有WAF的存在,我们使用union select 的时候需要将空格转换成/**/绕过,当然也可以用其他方法绕过

这里回显位置是2,我们可以看到爆出了数据,同时页面Notice里面提示了我们unserialize(),所以这里涉及了反序列化漏洞,我们先不管这个,进一步读取数据

可以看到data是序列化之后的结果,泄露的源代码里面也有getBlogContents函数,其配合get函数,恰好构造成SSRF漏洞, 并且blog的值我们可以通过构造反序列,利用file协议来进行任意文件读取 。

反序列化的payload我们直接依葫芦画瓢即可

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

现在的问题在于我们应当将payload放在哪里,才可以使其正确的被反序列化。

答案是:在SQL语句里面控制

因为页面提示了我们反序列化,所以猜测no参数的值代入数据库查询之后还会被反序列化一次,这个时候就会导致blog变成我们构造的blog

后面分析view.php源代码也可以看出

所以我们将构造之后的序列化payload放进no参数SQL语句里面,即

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

这里可以看到blog的值已经成为我们构造的了

查看源代码

当然用这个方法还可以查看view.php ,db.php等等文件,加深自己对题目的认识。

网鼎杯 fakebook的更多相关文章

  1. 刷题记录:[网鼎杯]Fakebook

    目录 刷题记录:[网鼎杯]Fakebook 一.涉及知识点 1.敏感文件泄露 2.sql注入 二.解题方法 刷题记录:[网鼎杯]Fakebook 题目复现链接:https://buuoj.cn/cha ...

  2. CTF-i春秋网鼎杯第四场部分writeup

    CTF-i春秋网鼎杯第四场部分writeup 因为我们组的比赛是在第四场,所以前两次都是群里扔过来几道题然后做,也不知道什么原因第三场的题目没人发,所以就没做,昨天打了第四场,简直是被虐着打. she ...

  3. CTF-i春秋网鼎杯第二场misc部分writeup

    CTF-i春秋网鼎杯第二场misc部分writeup 套娃 下载下来是六张图片 直接看并没有什么信息 一个一个查看属性 没有找到有用信息 到winhexv里看一下 都是标准的png图片,而且没有fla ...

  4. CTF-i春秋网鼎杯第一场misc部分writeup

    CTF-i春秋网鼎杯第一场misc部分writeup 最近因为工作原因报名了网鼎杯,被虐了几天后方知自己还是太年轻!分享一下自己的解题经验吧 minified 题目: 一张花屏,png的图片,老方法, ...

  5. 2020年第二届“网鼎杯”网络安全大赛 白虎组 部分题目Writeup

    2020年第二届“网鼎杯”网络安全大赛 白虎组 部分题目Writeup 2020年网鼎杯白虎组赛题.zip下载 https://download.csdn.net/download/jameswhit ...

  6. 2020 网鼎杯wp

    2020 网鼎杯WP 又是划水的一天,就只做出来4题,欸,还是太菜,这里就记录一下做出的几题的解题记录 AreUSerialz 知识点:反序列化 打开链接直接给出源码 <?php include ...

  7. [网鼎杯 2018]Comment

    [网鼎杯 2018]Comment 又遇到了一道有意思的题目,还是比较综合的,考的跟之前有一道很相像,用的还是二次注入. 因为找不到登陆点的sql注入,所以扫了一下源码,发现是存在git泄露的. [2 ...

  8. 网鼎杯2020 AreUSerialz

    0x00 前言 ...有一说一,赵总的BUUCTF上的这道题目并没有复现到精髓.其实感觉出题人的题目本身没有那么简单的,只不过非预期实在是太简单惹. 涉及知识点: 1.php中protected变量反 ...

  9. 【网鼎杯2018】fakebook

    解题过程: 首先进行目录扫描,发现以下目录: user.php.bak login.php flag.php user.php robots.txt user.php.bak猜测存在源码泄露. 查看源 ...

随机推荐

  1. C++ 数据结构 2:栈和队列

    1 栈 1.1 栈的基本概念 栈(stack)又名堆栈,它是一种 运算受限的线性表.限定 仅在表尾进行插入和删除操作 的线性表.表尾被称为栈顶,相对地,把另一端称为栈底. 1.1.1 特点 它的特殊之 ...

  2. Pandas_数据读取与存储数据(精炼)

    # 一,读取 CSV 文件: # 文字解析函数: # pd.read_csv() 从文件中加载带分隔符的数据,默认分隔符为逗号 # pd.read_table() 从文件中加载带分隔符的数据,默认分隔 ...

  3. python_udp_多人聊天室_简单版

    udp-一定是client端先发送数据. server.py import socket friend_lst = {'alex':'32','太白':'33'} sk =socket.socket( ...

  4. netfilter 的扩展功能 helper tftp-nat

    /* 需要对conntrack进行功能扩展的协议,会初始化一个struct nf_conntrack_helper 实例,把该实例注册到Netfilter中管理的全局哈希表中. 查找helper使用的 ...

  5. linux中ugo权限管理(chmod/chown)

    查看ugo权限: ll  [root@localhost test]# ll total 12 -rwxr-xr-x 2 root root 4 Oct  3 11:44 a lrwxrwxrwx 1 ...

  6. Linux(Centos6.8)配置Nginx环境

    1.环境配置 操作系统:centos6.8 [root@host79 ~]# uname -a Linux host79.pluto 2.6.32-642.el6.x86_64 #1 SMP Tue ...

  7. C++中内存布局 以及自由存储区和堆的理解

    文章搬运自https://www.cnblogs.com/QG-whz/p/5060894.html,如有侵权请告知删除 当我问你C++的内存布局时,你大概会回答: "在C++中,内存区分为 ...

  8. NPOI读写Excel组件封装Excel导入导出组件

    后台管理系统多数情况会与Excel打交道,常见的就是Excel的导入导出,对于Excel的操作往往是繁琐且容易出错的,对于后台系统的导入导出交互过程往往是固定的,对于这部分操作,我们可以抽离出公共组件 ...

  9. .Net orm 开源项目 FreeSql 2.0.0(满意的答卷)

    写在开头 2018年11月头脑发热到今天,一晃已经两年,当初从舒服区走向一个巨大的坑,回头一看后背一凉. 两年时间从无到有,经历数不清的日夜奋斗(有人问花了多长时间投入,答案:全职x2 + 两年无休息 ...

  10. 使用Folx下载热门电影居然这么简单

    在闲暇的时候,很多人会选择观看电影.电视剧来打发时间.对于一些热门的资源,可以通过网页搜索的方式,找到很多与之相对应的种子资源. 但有时候,一些不那么热门的资源就要花费较多时间搜索.有了Folx bt ...