bugku welcome to bugkuctf
题目地址:http://123.206.87.240:8006/test1/
这道题主要用到了俩个知识点:php伪协议和序列化
点进题目看到:you are not the number of bugku !这句话,很来气,啥都没有,查看源码。

看到三个get方式提交的参数。txt、file、password。第一眼看到还是没什么思路,先完成if条件,看第八行代码,我们要使user这个文件里面的内容完全等于"welcome to the bugkuctf"。这里我们用到了第一个知识点,php伪协议里面的PHP://input,写入txt,构造payload如下。 //这里不明白为什么不可以直接令txt=welcome to bugkuctf。

我们就得到了右边这个页面。然后注意到hint.php这个东西,尝试访问一下,什么也没有。这里,我们传入第二个参数file,并利用伪协议的PHP://fifter读取一下hint.php的源码,结果是base64加密的,读完之后解密一下就行了。

解密右边的密文,得到下图代码,这里有一个FLAG类,注意一下,后面有用。

然后我们用同样的方法读取index.php,解密后得到如下代码。//关于为什么可以直接读index.php,网上找了很久也没有到合适的答案,应该是经验之谈吧。

御剑扫描后台时,发现有flag.php页面,我们试着读取一下。把index.php改为flag.php,结果如下:
为什么会这样呢?我们观察第八行代码,这一句的作用是,利用正则匹配,是file里面不能含有flag。只能想其它的办法获得flag。我们往下看else里面的语句。它表示如果file不含flag,就会把file包含进去,然后$password进行反序列化,再输出$password的值。我们回到FLAG类那块,看到里面有一个$file属性,并且有一个魔术方法_tostring(),这个方法的作用就是当调用实例化对象时就会自动执行_tostring()这个方法。简单来说创造一个这个类的对象就会调用这个方法。而在_tostring()中,会输出以字符串的形式输出file,根据上面的这些条件,我们可以让$password为FLAG类型,并且让FLAG中的$file就等于flag.php,这样我们就可以得到flag.php的内容了,不过要记得,前面$password进行了反序列化的操作,所以我们要先把它序列化。写一个php脚本吧!如下:

左边是flag.php序列化之后,这个脚本大家可以先在自己电脑室试一下,用phpstudy就行,放在根目录下,具体的用法可以百度,然后我们传入txt、file、password的值
这里的%22是双引号。
然后再查看器里找到flag:

(ps:本人太菜,若有错误的地方欢迎大佬随时责骂。。。。xixixii)
bugku welcome to bugkuctf的更多相关文章
- php封装协议的两道题
这几天终于刷完了自己说是要刷完的那几道题,赶紧写几篇博客记录.. 1. 先看看这个网站:https://blog.csdn.net/qq_41289254/article/details/81388 ...
- php://filter(文件包含漏洞利用)及php://input
1. php://filter 文件包含漏洞:https://blog.csdn.net/fageweiketang/article/details/80699051 筛选过滤应用: 1. 字符串过滤 ...
- 记bugku的——“welcome to bugkuctf”
今天终于拾起来ctf的比赛了,开始了练习之旅.今天写一道bugku上的题目wp,属于利用php源码泄漏的题目吧,我觉得不是很简单...所以把自己的思路放上来. 题目源头:http://120.24.8 ...
- Bugku-CTF之welcome to bugkuctf(php://filter和php://input的妙用)
Day24 welcome to bugkuctf http://123.206.87.240:8006/test1/ 本题要点:代码审计,PHP://filter , php://input , ...
- BugkuCTF 域名解析
前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文章的形式发表,感谢大家一直以来的支持和理 ...
- http://www.bugku.com:Bugku——PHP伪协议+魔幻函数+序列化的综合应用(http://120.24.86.145:8006/test1/)
这一道题目,幸好俺有基础知识护体,不然还真干不掉. 首先,登录看题目,取消隐藏代码的注释.可知可输入三个参数txt.file和password并进行逻辑判断:应该让txt==‘welcom ...
- Bugku web(1—35)
1.web2 打开网页: 哈哈,其实按下F12你就会发现flag. 2.计算器 打开网页,只是让你输入计算结果,但是发现只能输入一个数字,这时按下F12,修改一下参数,使之可以输入多个数字,修改后输入 ...
- BugkuCTF——wp(旧版)
title: BugkuCTF--wp(旧版) date: 2020-4-25 tags: CTF,比赛 categories: CTF 比赛 Web篇 0x001-web2 解题思路: 1.直接按F ...
- bugku login2 writeup 不使用vps的方法
0x00前言 这个题是sql注入与命令执行相结合的一个题,思路有两个: 一.:sql注入登录web系统,命令执行反弹公网IP监听端口(需要vps),此种方法详见链接:http://www.bugku. ...
随机推荐
- WPF Clip实现百叶窗
原文:WPF Clip实现百叶窗 效果图; 后台代码: public MainWindow() { InitializeComponent(); ...
- 卷积(convolution)与相关(correlation)(matlab 实现)
1. 卷积(convolution) 输出 y(n) 是作为在 x(k) 和 h(n−k)(反转和移位)重叠之下的样本和求出的. 考虑下面两个序列: x(n)=[3,11,7,0,−1,4,2],−3 ...
- Cocos2d-x移植WP8时间CCScrollView问题
cocos2d-x 2.2中的CCScrollView和CCTableView存在bug.导致区域裁剪错误 我是这样解决的. 在CCEGLView::setScissorInPoints里.依据不同旋 ...
- STM32处理器AD难度整理
1.STM32的AD变化,任务组可以转换成两组:规则组和注射组.随机序列按随机顺序变换多种渠道构成了一组转换.例如.能够完成转换中,例如按照以下顺序:通道3.通道8.通道2.通道2.通道0.通道2.通 ...
- Hadoop MapReduce编程入门案例
Hadoop入门例程简介 一个.有些指令 (1)Hadoop新与旧API差异 新API倾向于使用虚拟课堂(象类),而不是接口.由于这更easy扩展. 比如,能够无需改动类的实现而在虚类中加入一个方法( ...
- ASP .NET Model
Model是全局变量,一个页面一个 前台 @ModelWebApplication1.Models.Movie; @{ ViewBag.Title = "ModelTest"; } ...
- v-charts显示标题
使用v-charts的时候,如果要显示标题需要以下操作 1. 加入:title props <ve-pie :title="chartTitle" :data="c ...
- .NET Core 3.0 Preview 5 亮点之一:发布单文件可执行程序
在阅读 Announcing .NET Core 3.0 Preview 5 时发现了 .NET Core 3.0 Preview 5 的一个新特性 —— Publishing Single EXEs ...
- WPF x:Array的使用
<Window x:Class="XamlTest.Window1" xmlns="http://schemas.microsoft.com/winf ...
- StackExchange.Redis 封装类
using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; using ...