CTF
工欲善其事,必先利其器。
本页面用于汇总各种 CTF 工具,持续不定期更新。
本页面最后更新于 2020-01-13 09:20 CST 。
部分已上传百度网盘,需要的朋友可以直接下载。
有些工具也可以到各自的官网或者 GitHub 下载。
我不生产工具,我只是工具的搬运工。
What is CTF?
CTF(Capture The Flag,夺旗赛)起源于 1996 年 DEFCON 全球黑客大会,是网络安全爱好者之间的竞技游戏。
参赛者寻找一个信息系统中存在的漏洞,通过各种攻击手法获取服务器后寻找指定的固定格式字段,形如 flag{xxxx}
,提交到裁判机可以得分。
CTF 中题目类型大致可分为:
- WEB
- PWN
- REVERSE(逆向工程)
- CRYPTO(密码学)
- MISC(杂项)
资源合集
演练平台
在线工具
CTFcode - Encode & Decode Online Tools
工具合集
Kali Linux by Offensive Security
CTFtools by enthusiastic netizens
吾爱破解工具 by 52pojie
看雪工具 by pediy
文档工具
Typora — a markdown editor, markdown reader.
学习资源
Audi-1/sqli-labs - GitHub - Study SQL Injection
20 关 XSS 小游戏(提取码 mcr1) - Study XSS
WebGoat -GitHub - A deliberately insecure Web Application
二进制工具
010 Editor
一个很棒的十六进制编辑器。
官网:https://www.sweetscape.com/010editor/
破解版百度网盘:提取码 ccry
这个工具破解起来不难,你也可以尝试一下自己破解!
peda
GDB 的插件,可以更直观的调试运行一个 ELF 程序。
GitHub:https://github.com/longld/peda
安装:
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>
第二种
使用 peda 自带的 checksec。
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)
号称史上最强的逆向工具。
会自动安装Python v2.7。
官网:https://www.hex-rays.com/products/ida/
推荐书籍:《IDA Pro权威指南》
【IDA Pro V6.8破解版】
百度网盘: 提取码j5xu
快捷键:
Esc
关闭窗口、后退
Ctrl + 鼠标滚轮
放大缩小
窗口:
IDA View
反汇编窗口,面向文本的列表视图和基于图形的视图
IDA 图形视图中,Yes
边默认为绿色,No
边默认为红色,正常边为蓝色。
IDA 文本视图中,实线箭头代表非条件跳转,虚线箭头代表条件跳转。出现粗线条说明跳转到前面(一般是有循环)。
Ghidra
官网(需要梯子):https://ghidra-sre.org/
由美国国家安全局(NSA)发布,免费。
x64dbg
动态调试 PE 文件。
GitHub:https://github.com/x64dbg/x64dbg
OllyDbg
动态调试 PE 文件。
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.
GitHub:https://github.com/0xd4d/dnSpy
apktool
从 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
file 命令
可根据幻数(或称为魔数)推测文件类型。
一般,Windows 和 Linux 都自带此命令。
「文件扩展名」其实可以无实际意义。而幻数可以识别一个文件的类型。
何为幻数?
如 Java 字节码文件(后缀为 .class
)的文件头为 CA FE BA BE
(可用二进制编辑器查看),实际没什么意义,只是容易识别。
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 文件即可。
百度网盘:提取码 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
可用于解密一些古典密码。
百度网盘: 提取码toj4
yafu
很棒的因数分解工具。下载:https://sourceforge.net/projects/yafu/
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 语言写的,所以为了方便,安装预编译版本:
不过支持的 Python 版本比较旧。
PyCryptodome
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
简称 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
特别提醒:网上流传了很多已经被黑客修改的 Cknife。最好换用中国蚁剑。
中国蚁剑
AntSword, inspired by Cknife.
GitHub:https://github.com/AntSwordProject/antSword
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
跟着扩展。
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 - 接码平台
代收验证码短信,通常用于注册一些站点的账号。
勿作死。
其他实用工具
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