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. ...
随机推荐
- 关于VS2015中的code snippet无法使用的问题
什么是code snippet? Code snippets are small blocks of reusable code that can be inserted in a code file ...
- 【Android先进】如何使用数据文件来保存程序
在程序,有许多方法来存储和检索数据,本文,它描述了如何使用文件系统来保存数据编程和读取操作 我直接写了一个帮助类,进行文件的写入和读取操作 /** * 用于在文件里保存程序数据 * * @author ...
- Sync Framework Toolkit 开源库
Sync Framework Toolkit构建在Sync Framework 2.1之上,使用OData在所有平台或客户端——包括Windows Phone 7.Silverlight.Window ...
- INCORRECT PERMISSIONS ON /USR/LIB/PO1KIT-AGENT-HELPER-1(NEEDS TO BE SETUID ROOT)
INCORRECT PERMISSIONS ON /USR/LIB/PO1KIT-AGENT-HELPER-1(NEEDS TO BE SETUID ROOT) # sudo chmod +s /us ...
- RHEL 6和RHEL 7(CentOS 6和CentOS 7)恢复ROOT密码
RedHat 6恢复Root密码: 1.启动RedHat 6的时候在这个界面按任意键 2.出现如下界面,按 e 3.出现如下界面,选择第二个--kernel,然后再按 e 4.出现如下界面,输入 空格 ...
- OnPropertyChanged的使用
#region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; ...
- Qt中使用Boost
编译BOOST库 bjam stage --toolset=qcc --without-graph --without-graph_parallel --without-math --without- ...
- Windows软件在Linux上的等价/替代/模仿软件列表 (抄一个)
Last update: 16.07.2003, 31.01.2005, 27.05.2005 您可在以下网站发现本列表最新版:http://www.linuxrsp.ru/win-lin-soft/ ...
- Generating Names and Classifying Names with Character-Level RNN
原文地址: Generating Names with Character-Level RNN 搬运只为督促自己学习,没有其他目的. Preparing the Data Download the ...
- 在IE浏览器 使用PHPExcel导出文件时时 文件名中文乱码
1.当我们使用IE内核的浏览器下在PHPExcel报表时(谷歌.火狐浏览器正常, IE浏览器,360浏览器的兼容模式报错),会出现如下错误: 2.解决办法: 在下载文件时,对当前的浏览器进行判断, 如 ...