CTF

Author Avatar
source. 11月 13, 2018
  • 在其它设备中阅读本文章

工欲善其事,必先利其器。

本页面用于汇总各种 CTF 工具,持续不定期更新。

本页面最后更新于 2020-01-13 09:20 CST 。

部分已上传百度网盘,需要的朋友可以直接下载。

有些工具也可以到各自的官网或者 GitHub 下载。

我不生产工具,我只是工具的搬运工。

What is CTF?

CTFCapture The Flag,夺旗赛)起源于 1996 年 DEFCON 全球黑客大会,是网络安全爱好者之间的竞技游戏。

参赛者寻找一个信息系统中存在的漏洞,通过各种攻击手法获取服务器后寻找指定的固定格式字段,形如 flag{xxxx},提交到裁判机可以得分。

CTF 中题目类型大致可分为:

  • WEB
  • PWN
  • REVERSE(逆向工程)
  • CRYPTO(密码学)
  • MISC(杂项)

资源合集

演练平台

攻防世界

实验吧

BugkuCTF

MOCTF

pwnhub

南邮 CG CTF

在线工具

CTFcode - Encode & Decode Online Tools

工具合集

Kali Linux by Offensive Security

CTFtools by enthusiastic netizens

吾爱破解工具 by 52pojie

看雪工具 by pediy

zardus/ctf-tools - GitHub

文档工具

Typora — a markdown editor, markdown reader.

学习资源

CTF Wiki

Audi-1/sqli-labs - GitHub - Study SQL Injection

20 关 XSS 小游戏(提取码 mcr1) - Study XSS

WebGoat -GitHub - A deliberately insecure Web Application

二进制工具

010 Editor

一个很棒的十六进制编辑器。

img

官网:https://www.sweetscape.com/010editor/

破解版百度网盘:提取码 ccry

这个工具破解起来不难,你也可以尝试一下自己破解!

peda

GDB 的插件,可以更直观的调试运行一个 ELF 程序。

GitHub:https://github.com/longld/peda

img

安装:

git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit

checksec

可以很容易获取 ELF 程序(Linux)的安全性和程序的运行平台。

第一种

某前辈写的 shell 脚本。

百度网盘:提取码 btvb

Usage:

./checksec.sh --file <filename>

img

第二种

使用 peda 自带的 checksec。

img

Python - pwntools

GitHub:https://github.com/Gallopsled/pwntools

官方 Doc:https://docs.pwntools.com/

Installation

sudo apt update
sudo apt install python2.7 python-pip python-dev git libssl-dev
sudo pip install --upgrade pwntools

Usage

from pwn import *

请参看官方文档

ROPgadget

Installation

先安装 Capstone:

sudo apt update
sudo apt install python-capstone

然后,下载项目源代码:https://github.com/JonathanSalwan/ROPgadget/releases

解压后,在该目录下使用命令:

sudo python setup.py install

Usage

usage: ROPgadget [-h] [-v] [-c] [--binary <binary>] [--opcode <opcodes>]
                 [--string <string>] [--memstr <string>] [--depth <nbyte>]
                 [--only <key>] [--filter <key>] [--range <start-end>]
                 [--badbytes <byte>] [--rawArch <arch>] [--rawMode <mode>]
                 [--re <re>] [--offset <hexaddr>] [--ropchain] [--thumb]
                 [--console] [--norop] [--nojop] [--callPreceded] [--nosys]
                 [--multibr] [--all] [--dump]

description:
  ROPgadget lets you search your gadgets on a binary. It supports several 
  file formats and architectures and uses the Capstone disassembler for
  the search engine.

formats supported: 
  - ELF
  - PE
  - Mach-O
  - Raw

architectures supported:
  - x86
  - x86-64
  - ARM
  - ARM64
  - MIPS
  - PowerPC
  - Sparc

optional arguments:
  -h, --help           show this help message and exit
  -v, --version        Display the ROPgadget's version
  -c, --checkUpdate    Checks if a new version is available
  --binary <binary>    Specify a binary filename to analyze
  --opcode <opcodes>   Search opcode in executable segment
  --string <string>    Search string in readable segment
  --memstr <string>    Search each byte in all readable segment
  --depth <nbyte>      Depth for search engine (default 10)
  --only <key>         Only show specific instructions
  --filter <key>       Suppress specific instructions
  --range <start-end>  Search between two addresses (0x...-0x...)
  --badbytes <byte>    Rejects specific bytes in the gadget's address
  --rawArch <arch>     Specify an arch for a raw file
  --rawMode <mode>     Specify a mode for a raw file
  --re <re>            Regular expression
  --offset <hexaddr>   Specify an offset for gadget addresses
  --ropchain           Enable the ROP chain generation
  --thumb              Use the thumb mode for the search engine (ARM only)
  --console            Use an interactive console for search engine
  --norop              Disable ROP search engine
  --nojop              Disable JOP search engine
  --callPreceded       Only show gadgets which are call-preceded
  --nosys              Disable SYS search engine
  --multibr            Enable multiple branch gadgets
  --all                Disables the removal of duplicate gadgets
  --dump               Outputs the gadget bytes

IDA Pro

IDA(Interactive Disassembler Professional, 交互式反汇编器专业版) is a Windows, Linux or Mac OS X hosted multi-processor disassembler and debugger that offers so many features it is hard to describe them all. Just grab an evaluation version if you want a test drive.

采用反汇编算法:递归下降(Recursive descent)

img

号称史上最强的逆向工具。

会自动安装Python v2.7。

官网:https://www.hex-rays.com/products/ida/

推荐书籍:《IDA Pro权威指南》

【IDA Pro V6.8破解版】

百度网盘: 提取码j5xu

快捷键:

Esc 关闭窗口、后退

Ctrl + 鼠标滚轮 放大缩小


窗口:

IDA View 反汇编窗口,面向文本的列表视图和基于图形的视图

IDA 图形视图中,Yes 边默认为绿色,No 边默认为红色,正常边为蓝色。

img

IDA 文本视图中,实线箭头代表非条件跳转,虚线箭头代表条件跳转。出现粗线条说明跳转到前面(一般是有循环)。

img

Ghidra

官网(需要梯子):https://ghidra-sre.org/

由美国国家安全局(NSA)发布,免费。

x64dbg

动态调试 PE 文件。

GitHub:https://github.com/x64dbg/x64dbg

OllyDbg

动态调试 PE 文件。

官网:http://www.ollydbg.de/

dnSpy

一个 .NET 反编译、修改代码的工具。界面类似 Visual Studio 2017。

dnSpy is a debugger and .NET assembly editor. You can use it to edit and debug assemblies even if you don’t have any source code available.

img

GitHub:https://github.com/0xd4d/dnSpy

apktool

img

从 apk 文件中还原出 xml 和图版等资源文件。Kali Linux 自带。

官网:https://ibotpeaches.github.io/Apktool/

文档:https://ibotpeaches.github.io/Apktool/documentation/

百度网盘:提取码zzqi

解包:

unzip test.apk

解码:

apktool d test.jar

dex2jar

.dex 文件转成 .jar 文件,从而实现 APK 的反编译。

GitHub:https://github.com/pxb1988/dex2jar

百度网盘:提取码 akph

Usage

把这个工具的文件夹路径添加到系统环境变量后,可以直接使用命令行执行操作:

d2j-dex2jar classes.dex

img

file 命令

可根据幻数(或称为魔数)推测文件类型。

一般,Windows 和 Linux 都自带此命令。

img

「文件扩展名」其实可以无实际意义。而幻数可以识别一个文件的类型。

何为幻数?

如 Java 字节码文件(后缀为 .class)的文件头为 CA FE BA BE(可用二进制编辑器查看),实际没什么意义,只是容易识别。

img

Usage

λ file --help                                                                   
Usage: file [OPTION...] [FILE...]                                               
Determine type of FILEs.                                                        

      --help                 display this help and exit                         
  -v, --version              output version information and exit                
  -m, --magic-file LIST      use LIST as a colon-separated list of magic        
                               number files                                     
  -z, --uncompress           try to look inside compressed files                
  -Z, --uncompress-noreport  only print the contents of compressed files        
  -b, --brief                do not prepend filenames to output lines           
  -c, --checking-printout    print the parsed form of the magic file, use in    
                               conjunction with -m to debug a new magic file    
                               before installing it                             
  -e, --exclude TEST         exclude TEST from the list of test to be           
                               performed for file. Valid tests are:             
                               apptype, ascii, cdf, compress, elf, encoding,    
                               soft, tar, text, tokens                          
  -f, --files-from FILE      read the filenames to be examined from FILE        
  -F, --separator STRING     use string as separator instead of `:'             
  -i, --mime                 output MIME type strings (--mime-type and          
                               --mime-encoding)                                 
      --apple                output the Apple CREATOR/TYPE                      
      --extension            output a slash-separated list of extensions        
      --mime-type            output the MIME type                               
      --mime-encoding        output the MIME encoding                           
  -k, --keep-going           don't stop at the first match                      
  -l, --list                 list magic strength                                
  -L, --dereference          follow symlinks                                    
  -h, --no-dereference       don't follow symlinks (default)                    
  -n, --no-buffer            do not buffer output                               
  -N, --no-pad               do not pad output                                  
  -0, --print0               terminate filenames with ASCII NUL                 
  -p, --preserve-date        preserve access times on files                     
  -P, --parameter            set file engine parameter limits                   
                               indir        15 recursion limit for indirection  
                               name         30 use limit for name/use magic     
                               elf_notes   256 max ELF notes processed          
                               elf_phnum   128 max ELF prog sections processed  
                               elf_shnum 32768 max ELF sections processed       
  -r, --raw                  don't translate unprintable chars to \ooo          
  -s, --special-files        treat special (block/char devices) files as        
                             ordinary ones                                      
  -C, --compile              compile file specified by -m                       
  -d, --debug                print debugging messages                           

Report bugs to http://bugs.gw.com/

PEiD

用于识别 Windows PE 文件的各种信息,包括使用的编译器、使用的模糊技术(加壳)。

Usage

打开软件后直接拖入 PE 文件即可。

img

百度网盘:提取码 4u0c

Python - python-exe-unpacker

若一个 .exe 文件是 Python 写的,可用此工具解包。

GitHub:https://github.com/countercept/python-exe-unpacker

Installation

下载解压,安装依赖:

pip2 install --user -r requirements.txt

然后就可以使用了。

Usage

.exe 解包:

python pyinstxtractor.py <exe file name>

还原 .py 文件:

python python-exe-unpacker.py -p <file name>

Python - uncompyle2

Python 反编译工具。

GitHub: https://github.com/Mysterie/uncompyle2

Installation

python setup.py install

Usage

uncompyle2 <filename>

密码学工具

CTFcrackTools

China’s first CTFTools framework.

官方宣称:中国国内首个 CTF 工具框架,旨在帮助 CTFer 快速攻克难关。

官方 Github:https://github.com/Acmesec/CTFCrackTools

可用于解密一些古典密码。

img

百度网盘: 提取码toj4

yafu

很棒的因数分解工具。下载:https://sourceforge.net/projects/yafu/

img

Usage

cmd 进入工具所在的文件夹,输入命令:

yafu-x64 factor(n)

其中,n 是你要分解的数。

若出现报错:mismatched parens,是因为在命令行里不支持过长的位数(一般都是用于分解较大的数,所以一般是用这个方法),所以我们只要把 n 的值从文件中去读取即可,在工具所在目录下新建文本文件 pcat.txt,写上 n 的值,注意:最后一定要换行

这样,运行命令:

yafu-x64 "factor(@)" -batchfile pcat.txt

就可以分解位数很大的数了。

Python - gmpy2

gmpy2 is a C-coded Python extension module that supports multiple-precision arithmetic. In addition to supporting GMP or MPIR for multiple-precision integer and rational arithmetic, gmpy2 adds support for the MPFR (correctly rounded real floating-point arithmetic) and MPC (correctly rounded complex floating-point arithmetic) libraries.

PyPI官网:https://pypi.org/project/gmpy2/

Installation

注意:这个库是用 C 语言写的,所以要编译,在 Linux 下就很方便,Windows 下需要 VS 环境(总之很麻烦)。所以推荐下载预编译版本。

为了方便,我已经下好了适配 Python 2.7、3.5~8 的各种预编译 wheel。

使用时请注意 Python 版本和系统位数。如何使用 .whl 文件可以 Google 下。

百度网盘:提取码 lnm8

来源:https://www.lfd.uci.edu/~gohlke/pythonlibs/#gmpy (感谢 UCI)

Online - 中文摩斯电码加解密

官方宣称:互联网上唯一一个可以进行中文莫斯密码加密解密的工具。解密的时候注意字符之间的分隔符

链接:http://www.atool.org/morse.php

Python - PyCrypto

各种密码学。

大佬:这个库有点过时了(毕竟最后一次更新是在 2013 年)。

大佬:众所周知,现在都用PyCryptodome替代PyCrypto。

PyCrypto

这个库也是用 C 语言写的,所以为了方便,安装预编译版本:

PyCrypto - Voidspace

不过支持的 Python 版本比较旧。

PyCryptodome

pycryptodome · PyPI

Online - quipqiup

通过词频分析破解单表代换密码的在线工具。

Usage

将密文粘贴,点击【Solve】一键破解,概率大的排在前面。

Online - Vigenere Solver

通过统计方法破解维吉尼亚密码。

Usage

将密文粘贴,点击【Break Cipher】一键破解,概率大的排在前面。

隐写工具

Stegsolve

需要 JRE 环境。

打开工具后,【File】-【Open】打开图片文件。

【<】、【>】可查看图片各个通道的内容。

【Analyse】-【File Format】可以查看文件的详细信息。

【Analyse】-【Data Extract】可选择提取图片在某个通道(按某个顺序)的信息(该功能通常用于做 LSB 题)。

【Analyse】-【Stereogram Solver】可用于做3D图片题。【Analyse】-【Frame Browser】可用于查看GIF每一帧的内容(可用 Photoshop 代替)。

【Analyse】-【Image Combiner】可用于以某种方式合成两张图片。

百度网盘: 提取码 nby1

MP3 Stego

音频隐写工具,可以 Encode 和 Decode 。

使用方法:

将需要解密的文件复制到和 Decode.exe 所在目录,在cmd中打开他们所在目录,输入命令:

Decode -X mp3.mp3 -P password

其中,-X 后面跟着文件名,-P 后面跟着密码。

百度网盘:提取码 p5f6

Web工具

Burp Suite

img

简称 bp,很强大的 Web 综合工具。Kali Linux 自带 Community 版。

官网:https://portswigger.net/burp

文档:https://t0data.gitbooks.io/burpsuite/

文档(PDF版):https://legacy.gitbook.com/download/pdf/book/t0data/burpsuite

专业版:

v1.6 百度网盘:提取码uprv

v 1.7.30 百度网盘:提取码z9sx

中国菜刀

英文名 Cknife,中国人开发的很强大的开源 WebShell、一句话后门工具。

GitHub:https://github.com/Chora10/Cknife

官方网站:http://www.ms509.com/

特别提醒:网上流传了很多已经被黑客修改的 Cknife。最好换用中国蚁剑。

中国蚁剑

AntSword, inspired by Cknife.

GitHub:https://github.com/AntSwordProject/antSword

文档:http://doc.u0u.us/zh-hans/

Wireshark

官方下载:https://www.wireshark.org/#download

当使用最新版遇到问题时,不妨试试安装比较旧的版本。

官方所有版本下载:https://www.wireshark.org/download/win64/all-versions/

相信每个上过《计算机网络》课的人都知道这个工具。

常用于 Misc 中的流量分析题。

Chrome ext - Wappalyzer

从网页中提取指纹,识别 cms、服务、数据库。

官网:Wappalyzer - Download & Install

御剑

基于字典的目录扫描器,图形界面。

Python - dirsearch

dirsearch is a simple command line tool designed to brute force directories and files in websites.

基于字典的目录扫描器。

GitHub:https://github.com/maurosoria/dirsearch

Dependencies

  • Python 3.x

Usage

  • dirsearch.py 的目录打开命令行。
  • 可以先把 dirsearch.py 的目录添加到系统环境变量,这样以后就可以直接在 cmd 中直接使用。
python dirsearch.py -u http://cumt.edu.cn/ -e php
    --random-agents

选项 -u 后面跟着 URL,选项 -e 跟着扩展。

img

Python - subDomainsBrute

高并发子域名扫描器。

GitHub:https://github.com/lijiejie/subDomainsBrute

Dependencies

  • Python 2.x
  • pip install dnspython gevent

Usage

py -2 subDomainsBrute.py baidu.com

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -f FILE               File contains new line delimited subs, default is
                        subnames.txt.
  --full                Full scan, NAMES FILE subnames_full.txt will be used
                        to brute
  -i, --ignore-intranet
                        Ignore domains pointed to private IPs
  -t THREADS, --threads=THREADS
                        Num of scan threads, 200 by default
  -p PROCESS, --process=PROCESS
                        Num of scan Process, 6 by default
  -o OUTPUT, --output=OUTPUT
                        Output file name. default is {target}.txt

Matasploit

一款集合多个功能模块的渗透测试(黑客攻击)工具,Kali 集成。

Usage

msfconsole [options]

Common options:
    -E, --environment ENVIRONMENT    Set Rails environment, defaults to RAIL_ENV environment variable or 'production'

Database options:
    -M, --migration-path DIRECTORY   Specify a directory containing additional DB migrations
    -n, --no-database                Disable database support
    -y, --yaml PATH                  Specify a YAML file containing database settings

Framework options:
    -c FILE                          Load the specified configuration file
    -v, -V, --version                Show version

Module options:
        --defer-module-loads         Defer module loading unless explicitly asked.
    -m, --module-path DIRECTORY      Load an additional module path

Console options:
    -a, --ask                        Ask before exiting Metasploit or accept 'exit -y'
    -H, --history-file FILE          Save command history to the specified file
    -L, --real-readline              Use the system Readline library instead of RbReadline
    -o, --output FILE                Output to the specified file
    -p, --plugin PLUGIN              Load a plugin on startup
    -q, --quiet                      Do not print the banner on startup
    -r, --resource FILE              Execute the specified resource file (- for stdin)
    -x, --execute-command COMMAND    Execute the specified console commands (use ; for multiples)
    -h, --help                       Show this message

社会工程学工具

Online - 查号吧

在线查询一个地区下所有手机号码前缀。

电话区号查询|手机号码归属 - 查号吧

Online - 接码平台

代收验证码短信,通常用于注册一些站点的账号。

勿作死。

http://www.z-sms.com/

https://www.becmd.com/

https://www.shejiinn.com/

其他实用工具

certutil 命令计算文件的哈希值

Windows cmd 下输入命令:

certutil -hashfile <filename> MD5
certutil -hashfile <filename> SHA1
certutil -hashfile <filename> SHA256

批处理计算文件的哈希值

将以下代码保存成文件 hashfile.bat

@echo OFF

:LOOP

    set index=%1

    if %index%! == ! goto END

    echo     File name :    %index%    MD5    SHA1    SHA256
    echo.
    certutil -hashfile "%index%" MD5
    echo.
    certutil -hashfile "%index%" SHA1
    echo.
    certutil -hashfile "%index%" SHA256
    echo.
    echo.

    shift

    goto LOOP

:END

echo "Checksum ends."

pause

打开文件夹,在地址栏输入 shell:sendto 打开【发送到】目录,将 hashfile.bat 文件移动到此文件夹中。

以后,可以直接右键需要计算 hash 值的文件,【发送到】-【hashfile.bat】(支持 MD5、SHA1、SHA256)。

hosts 文件位置

Windows:

C:\Windows\System32\drivers\etc\hosts

Linux:

/etc/hosts

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 ComyDream
本文链接:http://comydream.github.io/ctf/index.html