fakebook

stm的fakebook,乍一看还以为是facebook,果然fake

看题

有登录和注册两个功能点

看了下robots.txt,发现有备份文件

果断下载,内容如下

这里的blog在注册页面要用到,先审计一下

<?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的session curl_setopt($ch, CURLOPT_URL, $url); // 设置要获取的url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 把输出转换为string
$output = curl_exec($ch); // 执行curl session
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 获取http状态码
if($httpCode == 404) {
return 404;
}
curl_close($ch); // 关闭 session return $output; // 返回结果
} public function getBlogContents ()
{
return $this->get($this->blog); // 调用get函数
} public function isValidBlog () // 判断blog格式是否正确
{
$blog = $this->blog;
return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
} }

blog的要求如图所示,emmm,^xxxx$表示匹配开头,和匹配结尾,\S匹配非空白字符,\i表示忽略大小写

忽然想到了php伪协议,因为这里的http(s)是匹配0次或1次,但是后边的正则无法满足

去搜了下curl_exec()的漏洞,看到了这篇介绍,原来是SSRF

但这里无法直接利用,继续fuzz

然后试了下/flag.php可以访问,但没有显示,猜测flag在这里面

随便注册一个账号,进去之后看到url有参数no,输入引号有报错

存在sql注入点,先order by查列数

说明列数是4,然后看下回显位,是2,这里用到一个姿势,union select被过滤可以用union++selectbypass

试了一下database()被过滤了,但是information_schema都可以查,依次爆库名、表名,再看看数据

发现data是php序列化字符串

结合上面的user.php代码,这里的逻辑应该是:sql查询 -> php序列化 -> 返回结果,这里的curl是应该是没有经过检测的,所以把blog对应的位置替换成我们构造的php序列化串,使用file协议进行ssrf

payload:

3 union++select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

XCTF-fakebook的更多相关文章

  1. 攻防世界(XCTF)WEB(进阶区)write up(四)

    ics-07  Web_php_include  Zhuanxv Web_python_template_injection ics-07 题前半部分是php弱类型 这段说当传入的id值浮点值不能为1 ...

  2. 攻防世界(XCTF)WEB(进阶区)write up(三)

    挑着做一些好玩的ctf题 FlatScience web2 unserialize3upload1wtf.sh-150ics-04web i-got-id-200 FlatScience 扫出来的lo ...

  3. 攻防世界(XCTF)WEB(进阶区)write up(一)

      cat ics-05 ics-06 lottery Cat XCTF 4th-WHCTF-2017 输入域名  输入普通域名无果  输入127.0.0.1返回了ping码的结果 有可能是命令执行 ...

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

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

  5. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  6. xctf进阶-unserialize3反序列化

    一道反序列化题: 打开后给出了一个php类,我们可以控制code值: `unserialize()` 会检查是否存在一个 `__wakeup()` 方法.如果存在,则会先调用 `__wakeup` 方 ...

  7. 日常破解--从XCTF的app3题目简单了解安卓备份文件以及sqliteCipher加密数据库

    一.题目来源     题目来源:XCTF app3题目 二.解题过程     1.下载好题目,下载完后发现是.ab后缀名的文件,如下图所示:     2.什么是.ab文件?.ab后缀名的文件是Andr ...

  8. 日常破解--XCTF easy_apk

    一.题目来源     来源:XCTF社区安卓题目easy_apk 二.破解思路     1.首先运行一下给的apk,发现就一个输入框和一个按钮,随便点击一下,发现弹出Toast验证失败.如下图所示: ...

  9. XCTF练习题-WEB-webshell

    XCTF练习题-WEB-webshell 解题步骤: 1.观察题目,打开场景 2.根据题目提示,这道题很有可能是获取webshell,再看描述,一句话,基本确认了,观察一下页面,一句话内容,密码为sh ...

  10. fakebook

    0x01 查看robots.txt 发现user.php.bak文件 得到源码 <?php class UserInfo { public $name = ""; publi ...

随机推荐

  1. Banner信息扫描

    Banner信息扫描 Banner一般用于表示对用户的欢迎,但其中可能包含敏感信息.获取Banner也属于信息搜索的范畴.在渗透测试中,典型的4xx.5xx信息泄露就属于Banner泄露的一种.在Ba ...

  2. 如何学习python爬虫

    分享网易云课堂上一个不错的视频教学:http://study.163.com/course/courseMain.htm?courseId=1003285002

  3. VScode 自定义用户代码块

    1定义html中的vue 见地址 https://blog.csdn.net/qq_40191093/article/details/82915028 2  https://www.cnblogs.c ...

  4. 6、Spring教程之自动装配

    自动装配说明 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean. Spring中bean有三种装配机制,分别是: 在xml中显式配置 ...

  5. 2、MyBatis教程之第一个MyBatis程序

    3.MyBatis第一个程序 1.搭建实验数据库 CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user`; CREA ...

  6. ionic3+angular 倒计时效果

    // 声明变量 applicationInterval: any; // 定时器 nextBtnText: String; nextBtnBool: Boolean; // 使用定时器,每秒执行一次 ...

  7. docker部署skywalking

    https://www.cnblogs.com/xiao987334176/p/13530575.html

  8. 3步安装Python虚拟环境virtualenv

    1. pip安装必要库 pip install virtualenv -i https://pypi.douban.com/simple pip install virtualenvwrapper - ...

  9. Go-06-数据类型、常量、运算符

    数据类型转换 Go语言采用数据类型前置加括号的方式进行类型转换,格式如:T(表达式).T表示要转换的类型:表达式包括变量.数值.函数返回值等. var a int =100 b := float(a) ...

  10. JAVAEE_Servlet_21_Cookie

    Cookie * Cookie 是什么? - Cookie翻译过来是曲奇饼干的意思 - Cookie可以保存回话状态,但是这个会话状态是保存在客户端上的,只要清除Cookie,或者 Cookie失效, ...