攻防世界WEB高手进阶之blgdel
CISCN final
打开页面

扫描目录

Robots.txt

Config.txt
代码审计
<?php class master
{
private $path;
private $name; function __construct()
{ } function stream_open($path)
{
if(!preg_match('/(.*)\/(.*)$/s',$path,$array,,))
return ;
$a=$array[];
parse_str($array[],$array); if(isset($array['path']))
{
$this->path=$array['path'];
}
else
return ;
if(isset($array['name']))
{
$this->name=$array['name'];
}
else
return ; if($a==='upload')
{
return $this->upload($this->path,$this->name);
}
elseif($a==='search')
{
return $this->search($this->path,$this->name);
}
else
return ;
}
function upload($path,$name)
{
if(!preg_match('/^uploads\/[a-z]{10}\/$/is',$path)||empty($_FILES[$name]['tmp_name']))
return ; $filename=$_FILES[$name]['name'];
echo $filename; $file=file_get_contents($_FILES[$name]['tmp_name']); $file=str_replace('<','!',$file);
$file=str_replace(urldecode('%03'),'!',$file);
$file=str_replace('"','!',$file);
$file=str_replace("'",'!',$file);
$file=str_replace('.','!',$file);
if(preg_match('/file:|http|pre|etc/is',$file))
{
echo 'illegalbbbbbb!';
return ;
} file_put_contents($path.$filename,$file);
file_put_contents($path.'user.jpg',$file); echo 'upload success!';
return ;
}
function search($path,$name)
{
if(!is_dir($path))
{
echo 'illegal!';
return ;
}
$files=scandir($path);
echo '</br>';
foreach($files as $k=>$v)
{
if(str_ireplace($name,'',$v)!==$v)
{
echo $v.'</br>';
}
} return ;
} function stream_eof()
{
return true;
}
function stream_read()
{
return '';
}
function stream_stat()
{
return '';
} } stream_wrapper_unregister('php');
stream_wrapper_unregister('phar');
stream_wrapper_unregister('zip');
stream_wrapper_register('master','master'); ?>
还发现有sql.txt

给出了数据库名,数据表,列名,字段名
访问User.php

发现有文件上传点
访问发现等级过低

估计要拿一个高分的账户
后面注意到注册页面有个推荐人,试了一下,注册一个新账户给10个积分

到达一百个积分的时候可以上传文件

上传一个图片马
上传失败,回头看看代码config.php

这里过滤了尖括号,代码尽管上传成功,但是无法执行

代码被替换了

无法上传php马,但是在尝试过程中发现.htaccess可以被上传,意味着我们可以包含文件
.htaccess相关介绍,在这里
链接:
https://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html
https://blog.csdn.net/cmzhuang/article/details/53537591
后面实在看不出东西,无奈WP大法

说的比较详细,大概意思是可以通过构造这个master协议来搜索文件,包含成功的话,这个文件的内容会映射到test.php里面
构造
php_value auto_append_file master://search/path={}&name={}
wp说的要把正斜杠编码传入才行,试了一下,确实不行,原因未知

编码一下
php_value auto_append_file master://search/path=%2fhome%2f&name=flag
然后放进.htaccess里面,上传
访问1.php

直接包含进来
php_value auto_append_file /home/hiahiahia_flag

Flag拿到了
攻防世界WEB高手进阶之blgdel的更多相关文章
- 攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup
攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup 题目介绍 题目考点 PHP代码审计 git源码泄露 Writeup 进入题目,点击一番,发现可能出现git ...
- 攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup
攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup 题目介绍 题目考点 模板注入 Writeup 进入题目 import flask import os a ...
- 攻防世界 WEB 高手进阶区 easytornado Writeup
攻防世界 WEB 高手进阶区 easytornado Writeup 题目介绍 题目考点 Python模板 tornado 模板注入 Writeup 进入题目, 目录遍历得到 /flag.txt /w ...
- 攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup
攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup 题目介绍 题目考点 SSTI模板注入漏洞 Writeup 知识补充 模板注入:模板引 ...
- 攻防世界 WEB 高手进阶区 XCTF Web_php_unserialize Writeup
攻防世界 WEB 高手进阶区 XCTF Web_php_unserialize Writeup 题目介绍 题名考点 PHP反序列化漏洞 正则匹配 Writeup <?php class Demo ...
- 攻防世界 WEB 高手进阶区 upload1 Writeup
攻防世界 WEB 高手进阶区 upload1 Writeup 题目介绍 题目考点 文件上传漏洞 一句话木马 中国菜刀类工具的使用 Writeup 使用burpsuite抓包 可见只是对上传文件的后缀进 ...
- 攻防世界 WEB 高手进阶区 unserialize3 Writeup
攻防世界 WEB 高手进阶区 unserialize3 Writeup 题目介绍 题目考点 PHP反序列化 __wakeup漏洞 Writeup 题名 unserialize 是反序列化函数名 了解一 ...
- 攻防世界 WEB 高手进阶区 PHP2 Writeup
攻防世界 WEB 高手进阶区 PHP2 Writeup 题目介绍 题目考点 url 二次解码 index.phps 文件(第一次使用dirsearch可能扫不到,需要加到工具字典里) php 简单语法 ...
- 攻防世界 WEB 高手进阶区 NSCTF web2 Writeup
攻防世界 WEB 高手进阶区 NSCTF web2 Writeup 题目介绍 题目考点 php基本函数语法 加密解密函数 base64_decode().str_rot13() 字符串反转函数 str ...
随机推荐
- 11-散列2 Hashing (25 分)
The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...
- Docker安装及简单使用(Ubuntu)
### Ubuntu18下docker安装 * step 1: 安装必要的一些系统工具 sudo apt-get update sudo apt-get -y install apt-transpor ...
- UI自动化实例:遍历点击带有滚动条的列表每一项
需求:验证列表每条资讯里的用户数是否正确.该列表分页请求数据,每页10条,每次滚动到底部自动增量请求10条. 实现自动化必要性: 1 资讯每天不定时更新需经常性验证, 程序更新或者环境切换需验证所有资 ...
- nginx返回file not found原因
nginx返回file not found原因1 确实没有这个文件2 没有权限访问这个网站目录!!!
- 根据jdk1.8源码整理而得,java集合体系(继承、实现关系)图解,超清晰,一看就懂,方便记忆
一.前言 1. 该关系图是本人根据JDK1.8 源码整理所得,只整理了常用的.常见的集合,并非全部. 2. 整理逻辑: Collection接口下有两个子接口:List 和 Set 接口. Map是独 ...
- 【题解】Luogu P2447 [SDOI2010]外星千足虫
原题传送门 根据题意,题目给的每个操作就相当于异或上选中的那几只虫子的足数(mod 2)等于0/1 这是一个异或方程组,珂以用高斯消元解出每个虫子的足数(mod 2).所需最小次数或判断有多解 但是看 ...
- ServerSocketChannel简述
一.前言 前篇文章中了解了SocketChannel:提供了连接到套接字通道,从某种层面而言,NIO中提供了类似于java.net包中对于网络操作的api的功能.既然已经有连接到Socket套接字的通 ...
- IP地址和MAC地址绑定的必要性
计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...
- 推荐一个GOLANG入门很好的网址
推荐一个GOLANG入门很好的网址,栗子很全 https://books.studygolang.com/gobyexample/
- java中String字符串
一.定义String字符串 String字符串和char字符不同,char使用单引号,只能表示一个字符,字符串就是一段文本.String是个类.这个类使用final修饰,所以这个类是不可以继承扩充和修 ...