题目地址: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的更多相关文章

  1. php封装协议的两道题

    这几天终于刷完了自己说是要刷完的那几道题,赶紧写几篇博客记录.. 1.  先看看这个网站:https://blog.csdn.net/qq_41289254/article/details/81388 ...

  2. php://filter(文件包含漏洞利用)及php://input

    1. php://filter 文件包含漏洞:https://blog.csdn.net/fageweiketang/article/details/80699051 筛选过滤应用: 1. 字符串过滤 ...

  3. 记bugku的——“welcome to bugkuctf”

    今天终于拾起来ctf的比赛了,开始了练习之旅.今天写一道bugku上的题目wp,属于利用php源码泄漏的题目吧,我觉得不是很简单...所以把自己的思路放上来. 题目源头:http://120.24.8 ...

  4. Bugku-CTF之welcome to bugkuctf(php://filter和php://input的妙用)

    Day24 welcome to bugkuctf http://123.206.87.240:8006/test1/ 本题要点:代码审计,PHP://filter ,  php://input ,  ...

  5. BugkuCTF 域名解析

    前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文章的形式发表,感谢大家一直以来的支持和理 ...

  6. http://www.bugku.com:Bugku——PHP伪协议+魔幻函数+序列化的综合应用(http://120.24.86.145:8006/test1/)

      这一道题目,幸好俺有基础知识护体,不然还真干不掉.     首先,登录看题目,取消隐藏代码的注释.可知可输入三个参数txt.file和password并进行逻辑判断:应该让txt==‘welcom ...

  7. Bugku web(1—35)

    1.web2 打开网页: 哈哈,其实按下F12你就会发现flag. 2.计算器 打开网页,只是让你输入计算结果,但是发现只能输入一个数字,这时按下F12,修改一下参数,使之可以输入多个数字,修改后输入 ...

  8. BugkuCTF——wp(旧版)

    title: BugkuCTF--wp(旧版) date: 2020-4-25 tags: CTF,比赛 categories: CTF 比赛 Web篇 0x001-web2 解题思路: 1.直接按F ...

  9. bugku login2 writeup 不使用vps的方法

    0x00前言 这个题是sql注入与命令执行相结合的一个题,思路有两个: 一.:sql注入登录web系统,命令执行反弹公网IP监听端口(需要vps),此种方法详见链接:http://www.bugku. ...

随机推荐

  1. SecureCRT自动登录Linux并设置时间

    #$language = "VBScript" #$interface = "1.0" crt.Screen.Synchronous = True ' This ...

  2. 微信小程序之登录页实例

    项目效果图: 目录结构: login.wxml: <view class="container"> <view class="login-icon&qu ...

  3. WPF旋转的界面实现

    原文:WPF旋转的界面实现 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/1821534 ...

  4. TargetNullValue与FallbackValue

    原文:TargetNullValue与FallbackValue TargetNullValue与FallbackValue都是BindingBase的属性. TargetNullValue:获取或设 ...

  5. sql分组统计多列值

    select BQDM,sum(case when HFBZ='0' then 1 ELSE 0 end) bxschf,sum(case when HFBZ='1' then 1 ELSE 0 en ...

  6. .NET与 java通用的3DES加密解密方法

    C#代码 private void button1_Click(object sender, EventArgs e) { string jiami = textBox1.Text; textBox2 ...

  7. oracle,sql server count函数 存储过程 判断 行数 注意事项

    oralce中使用 count 函数判断 行数 需要注意 一定是count 有值的字段,接下来看一组语句 --查询数据 select * from kk_create_ka where auto_id ...

  8. 使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理

    原文:使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理 摘要 通过对博客文章的管理,实现外键操作. 目录[-] 八.博客文章管理 1.查看文章 2.添加博客        3 ...

  9. JavaScript关于原型的相关内容

    function Person () { } Person.prototype.name = 'Alan'; Person.prototype.age = 26; Person.prototype.j ...

  10. Android零基础入门第88节:Fragment显示和隐藏、绑定和解绑

    在上一期我们学习了FragmentManager和FragmentTransaction的作用,并用案例学习了Fragment的添加.移除和替换,本期一起来学习Fragment显示和隐藏.绑定和解绑. ...