打开题目,得到一个网页,包含一个表格、两个按钮。

习惯性先查看网页源码,但没发现有效信息。


<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Fakebook</title> <link rel="stylesheet" href="css/bootstrap.min.css" crossorigin="anonymous">
<script src="js/jquery-3.3.1.slim.min.js" crossorigin="anonymous"></script>
<script src="js/popper.min.js" crossorigin="anonymous"></script>
<script src="js/bootstrap.min.js" crossorigin="anonymous"></script> </head>
<body>
<div class="container">
<h1>the Fakebook</h1>
<p>Share your stories with friends, family and friends from all over the world on <code>Fakebook</code>.</p> <table class="table">
<tr>
<th>#</th>
<th>username</th>
<th>age</th>
<th>blog</th>
</tr>
<tr></tr>
</table>
</div>
</body>
</html>

打开login.php,是一个登录页面,随手试了几个弱口令和SQL注入,没有成功,查看网页源码,也没有提示,估计问题不在这。

打开join.php页面,随便输入一点东西提交,都提示错误:Blog is not valid.,说明对blog字段的格式有要求,从字面和题目信息上理解,就是分享你的故事,应该没什么限制才对。

后来想了一下,可能是需要提交一个博客地址,尝试提交http://127.0.0.1http://localhost,均提示错误。

猜测可能过滤了127.0.0.1localhost关键字,随手试一下www.baidu.com,此时提示成功。

再次打开首页,发现多了一条记录。

点击用户名111,打开一个页面,看到the contents of his/her blog,兴奋了一下,不会是ssrf吧?

直接查看源码,发现是空的base64

直接上DNSLOG试试,也不行。到这里思路就断了,重新整理了一下,发现被绕进去了,问题不一定在blog字段,这个用户名和年龄是有回显的,猜测是XSS或二次注入,直接排除XSS,试一下注入吧。

好家伙,直接报错,把Web路径报出来了,明显是SQL注入。

尝试了一下插入已存在的用户名时会提示用户名已存在,说明后台会先在数据库中查找用户是否存在,可以用图中的SQL注入绕过检测。

猜测后台SQL语句如下:

# 检查用户是否存在
SELECT * FROM user WHERE username=''; # 插入新的记录
INSERT INTO user SET username='',passwd='',age='',blog='';

但是插入数据时,注入的用户名会被直接写入数据库,说明写入的时候用SQL预编译,无法注入。

直接用sqlmap跑,没发现flag,把users表dump出来,data这一列明显是PHP序列化,但是只能控制其中的字符串,不能控制整个反序列化字符串,所以不能使用反序列化。

使用sqlmap的--sql-shell参数,进入SQL交互,尝试执行SQL语句,把源码dump出来分析,没分析出啥。

select load_file('/var/www/html/index.php');
select load_file('/var/www/html/user.php');
select load_file('/var/www/html/db.php');
select load_file('/var/www/html/view.php');

随手试一下flag.php,居然成功了。

select load_file('/var/www/html/flag.php');

攻防世界Web之fakebook的更多相关文章

  1. CTF--web 攻防世界web题 robots backup

    攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...

  2. CTF--web 攻防世界web题 get_post

    攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...

  3. 攻防世界 web进阶练习 NewsCenter

    攻防世界 web进阶练习 NewsCenter   题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...

  4. XCTF攻防世界Web之WriteUp

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

  5. 攻防世界web新手区

    攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...

  6. XCTF攻防世界web进阶练习—mfw

    XCTF攻防世界web进阶练习-mfw题目为mfw,没有任何提示.直接打开题目,是一个网站 大概浏览一下其中的内容,看到其中url变化其实只是get的参数的变化查看它的源码,看到有一个?page=fl ...

  7. 攻防世界Web刷题记录(进阶区)

    攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...

  8. 攻防世界Web刷题记录(新手区)

    攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...

  9. 攻防世界Web区部分题解

    攻防世界Web区部分题解   前言:PHP序列化就是把代码中所有的 对象 , 类 , 数组 , 变量 , 匿名函数等全部转换为一个字符串 , 提供给用户传输和存储 . 而反序列化就是把字符串重新转换为 ...

随机推荐

  1. webpack learn1-配置项目加载各种静态资源及css预处理器2

    继续在webpack.config.js中配置loader { test:/\.css$/, use: [ 'style-loader', 'css-loader' ] },{ test:/\.(jp ...

  2. Jmeter系列(15)- 常用断言之大小断言

    大小断言 大小断言验证响应数据size大小,它的作用范围有主Sample与子Sample:适用场景,判断附件下载的大小,比如项目安装包 完整响应:全部响应信息 响应头:响应头信息,比如http协议的头 ...

  3. Linux系列(20) - shutdown

    作用 用于关机或重启 例子 [shutdown -h 05:30]:设定凌晨05:30关机 [shutdown -h +30]:30分钟后关机 [shutdown -h now] 立即关机 [shut ...

  4. FormData上传文件 带进度条

    * jQuery ajax  FormData 上传文件 template $.ajax({ url: url, type: 'POST', data: new FormData(form), dat ...

  5. P4480-[BJWC2018]餐巾计划问题【三分,贪心】

    正题 题目链接:https://www.luogu.com.cn/problem/P4480 题目大意 \(n\)天,第\(i\)天需要\(a_i\)个餐巾. 每个餐巾价格为\(p\),使用完后有两种 ...

  6. 使用jacob调用Windows的com对象,进行word、ppt等转换成ptf、html(二)

    富文本转pdf : 注意:simsun.ttc 可以百度下载:http://www.pc6.com/softview/SoftView_100415.html package com.orangecd ...

  7. 在Anaconda环境下安装Tensorflow

    安装Anaconda 下载Anaconda 个人版Individual Edition.如果下载速度慢,可以复制下载链接到迅雷或者在清华大学开源镜像站TUNA中找合适的版本. 注意在安装过程中的&qu ...

  8. 你需要知道的MySQL&InnoDB锁都在这里

    目录 一.前言 二.锁的类型 2.1 全局锁 2.2 表级锁 2.2.1 表锁 2.2.2 元数据锁(Meta Data Locks) 2.2.3 自增列锁(AUTO-INC Locks) 2.2.4 ...

  9. MySQL8.0允许外部访问

    MySQL8.0允许外部访问     版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/h99 ...

  10. SpringCloud微服务实战——搭建企业级开发框架(五):数据库持久化集成MySql+Druid+MyBatis-Plus

      在引入相关数据库持久化相关依赖库之前,我们可以考虑到,当我们因业务开发需要,引入各种各样的依赖库时,Jar包冲突是我们必须面对的一个问题,Spring为了解决这些Jar包的冲突,推出了各种bom, ...