WEB

dirsearch(目录扫描)

  • 用于扫描网站下的目录或文件,原理就是通过字典在url后添加目录然后发包看响应,如果响应为200就说明有这个目录或文件

  • 基本用法

  • image-20250408212430473

python dirsearch.py -u http://xxx
  • 注意
  1. 如果扫描中发现有/.git为403响应,可以尝试使用git_extract去提取文件,举例ctfshow-web-红包题第七弹
命令选项 参数/说明 示例
基本命令
-u URL 指定目标URL -u http://example.com
-l FILE 从文件读取多个目标URL -l urls.txt
扫描配置
-e EXTENSIONS 指定文件扩展名(逗号分隔) -e php,html,txt
-w WORDLIST 使用自定义字典文件(默认内置字典在db/目录) -w /path/to/wordlist.txt
-t THREADS 设置线程数(默认25) -t 50
-r 递归扫描(发现目录后继续深入) -r
-F 强制为所有字典条目添加扩展名(需搭配-e使用) -F -e php
--timeout TIMEOUT 设置请求超时时间(默认15秒) --timeout 20
过滤与输出
-x STATUS_CODES 排除指定状态码(如403,404) -x 403,500
--exclude-text TEXT 排除包含特定文本的响应(如“Not Found”) --exclude-text "404"
-o FILE 将结果保存到文件 -o results.txt
--format FORMAT 输出格式(支持plain/json/xml,默认plain) --format json
代理与请求头
--proxy PROXY 设置代理服务器 --proxy http://127.0.0.1:8080
-H HEADER 添加自定义请求头 -H "User-Agent: Test"
--cookie COOKIE 设置Cookie --cookie "session=abc123"
其他选项
--random-user-agents 随机化User-Agent头(绕过简单WAF) --random-user-agents
--delay DELAY 设置请求间隔延迟(秒) --delay 1.5
-f 美化输出(显示目录树结构) -f
-I STATUS_CODES 仅忽略指定状态码(与-x相反) -I 404

sqlmap(sql注入自动化检测工具)

  • 主要就是通过命令来对指定url进行sql注入的测试,一般来说简单题自己会,难题跑不出,不过学会使用还是很好的
  • 基本用法
python sqlmap.py -u http://xxx?xx=xx -dbs --batch
类别 参数 功能说明
目标指定 -u URL 指定目标 URL,检测注入点(如 -u "http://example.com?id=1"
-m 文件路径 从文件中批量读取 URL 进行扫描(如 -m urls.txt
-r 文件路径 从文件中加载 HTTP 请求(常用于 POST 注入,如 BP 抓包内容)
--dbms 数据库名字 指定数据库进行注入
--technique 代码 指定方式进行注入,代码如下:B(布尔)、E(报错)、U(union)、S(堆叠)、T(时间)、Q(内联查询)
数据库操作 -D 数据库名 指定目标数据库(如 -D mysql
-T 表名 指定目标表(如 -T users
-C 列名 指定目标列(如 -C username,password
--dbs 列出所有数据库
--current-db 获取当前数据库名
--tables 列出指定数据库的所有表
--columns 列出指定表的所有列
--schema 显示数据库表结构(包括字段类型)
--dump 导出指定表的数据(如 --dump -T users
--start 行数 指定导出的起始行(如 --start 10
--stop 行数 指定导出的结束行(如 --stop 20
--search 搜索数据库/表/列(如 --search -C password
会话与身份验证 --cookie "值" 设置 Cookie 进行身份验证或绕过限制(如 --cookie "PHPSESSID=abc123"
请求配置 --method=GET 指定 HTTP 请求方法(如 --method=POST
--referer "值" 伪造 Referer 头(如 --referer "https://google.com"
--user-agent "UA" 自定义 User-Agent(如 --user-agent "Mozilla/5.0"
--random-agent 使用随机 User-Agent 绕过检测
绕过防护 --tamper "脚本名" 使用篡改脚本绕过 WAF(如 --tamper "space2comment"),具体可以看下这篇文章
输出控制 --batch 自动选择默认选项,无需交互确认
性能优化 --threads 数值 设置并发线程数(1-10,如 --threads 5
--proxy "地址" 通过代理发送请求(如 --proxy "http://127.0.0.1:8080"
检测等级 --level=1-5 设置检测等级(1-5,默认 1,等级越高检测越全面)
风险控制 --risk=0-3 设置风险等级(0-3,默认 1,高风险可能破坏数据)
信息获取 -b 获取数据库版本(Banner)

BurpSuite(抓包工具)

  • 对请求抓包来进行修改或者攻击,常用模式有重发器和攻击器,攻击器可以用来实现弱口令爆破,重发器主要是对请求包进行修改后发出,比如添加cookie等,更高级的用法还在学习中

  • 安装教程,设置代理看这篇,觉得有点麻烦来着

phpStudy(本地环境)

  • 主要用来搭建本地php环境,对于本地开端口搭网站来使用靶场或者MySQL数据管理还是很友好的

  • 安装教程

  • 然后可以搭一个sqli-labsxss-labs的靶场来学习,我搭了但是都没打多少来着

antSword中国蚁剑(连马)

  • 当向网站传入一句话木马后可以通过蚁剑连接,蚁剑可提供的服务也很多,比如绕过禁用函数等,用里面的插件就可以了,不过平时我还是喜欢老老实实POST传参
  • 安装教程,关于里面插件要梯子,这个之前在做ctfshow_web-web12的时候学过,结果就是连手机热点也可以访问,所以没有梯子可以试下连热点

开发者工具F12(网页必用)

  • 做题差不多必看吧,不管是找元素还是控制台来控制前端代码,都挺有用的,而且hackbar插件也要在里面使用

image-20250408205437678

  • 至于源码的话,有几种方法,ctrl+U,右键查看源代码,F12,url前加view-source:这些都行,还有一些姿势就见SQCTF-WP

hackbar(网页传参)

  • 对网页进行GET/POST传参,也可以进行部分编码编解码功能,而且也可以通过mode中的row模式来看到响应包,挺好用一个工具,不过感觉火狐那个版本不好用,推荐chrome商店里面找
  • 下载地址,安装第一个就行

image-20250408210706200

  • 使用

image-20250408211200982

git_extract(提取git泄露文件)

  • 主要就是提取.git文件夹下的文件,重建项目源码,尤其是多人共同用git写项目时,可能信息泄露
  • 基本用法
python git_extract.py http://xxx/.git
  • 下载地址,GitHub上下载源码后cmd运行就行,较GitHack较为方便,两者功能相似

fenjing焚靖(ssti注入自动化检测工具)

  • 在SQCTF第一次使用,也正是这样产生了写这篇文章的想法。主要还是图形化页面来实现ssti检测,get shell后类似于连马

  • 基本用法

vv_fenjing\Scripts\activate.bat //进入虚拟环境
python -m fenjing webui //进入图形化页面

python -m fenjing scan [OPTIONS] //终端使用
命令 功能 选项 描述
scan 扫描指定的网站 -u, --url TEXT 需要扫描的URL
-e, --exec-cmd TEXT 成功后执行的shell指令,不填则进入交互模式
--interval FLOAT 每次请求的间隔
--detect-mode TEXT 检测模式,可为accurate或fast
--user-agent TEXT 请求时使用的User Agent
--header TEXT 请求时使用的Headers
--cookies TEXT 请求时使用的Cookie
crack 攻击指定的表单 -u, --url TEXT form所在的URL
-a, --action TEXT form的action,默认为当前路径
-m, --method TEXT form的提交方式,默认为POST
-i, --inputs TEXT form的参数,以逗号分隔
-e, --exec-cmd TEXT 成功后执行的shell指令,不填则成功后进入交互模式
--interval FLOAT 每次请求的间隔
--detect-mode TEXT 分析模式,可为accurate或fast
--user-agent TEXT 请求时使用的User Agent
--header TEXT 请求时使用的Headers
--cookies TEXT 请求时使用的Cookie
get-config 攻击指定的表单,并获得目标服务器的flask config -u, --url TEXT form所在的URL
-a, --action TEXT form的action,默认为当前路径
-m, --method TEXT form的提交方式,默认为POST
-i, --inputs TEXT form的参数,以逗号分隔
--interval FLOAT 每次请求的间隔
--detect-mode TEXT 分析模式,可为accurate或fast
--user-agent TEXT 请求时使用的User Agent
--header TEXT 请求时使用的Headers
--cookies TEXT 请求时使用的Cookie

arjun(参数爆破工具)

  • 安装
pip install arjun
  • 命令
选项/参数 说明
-h, –help 显示帮助信息并退出
-u URL 指定目标URL
-o, -oJ JSON_FILE 指定JSON格式的输出文件路径
-oT TEXT_FILE 指定文本格式的输出文件路径
-oB [BURP_PROXY] 输出到Burp Suite代理,默认地址为127.0.0.1:8080
-d DELAY 请求之间的延迟(秒),默认值:0
-t THREADS 并发线程数,默认值:5
-w WORDLIST 指定字典文件路径,默认值:{arjundir}/db/large.txt
-m METHOD 请求方法(GET/POST/XML/JSON),默认值:GET
-i [IMPORT_FILE] 从文件导入目标URL列表
-T TIMEOUT HTTP请求超时时间(秒),默认值:15
-c CHUNKS 每次发送的参数块大小(参数数量)
-q 静默模式,不显示输出
–rate-limit RATE_LIMIT 每秒最大请求数限制,默认值:9999
–headers [HEADERS] 添加请求头,多个头用换行分隔
–passive [PASSIVE] 从被动源(如Wayback/CommonCrawl/OTX)收集参数名
–stable 优先稳定性而非速度
–include INCLUDE 在每个请求中包含固定数据
–disable-redirects 禁用重定向
–casing CASING 参数命名风格(如:like_this/likeThis/likethis)
  • 使用
arjun -u http://xxx [-m GET/POST]

flask_unsign(session加/解密)

  • 安装
pip install flask-unsign
  • 使用

解密

flask-unsign --decode --cookie 'eyJpc19hZG1pbiI6MCwidXNlcl9pZCI6ImFub255bW91cyJ9.ZyyyoQ.M_fymfx7RJybrgZwoZv_hp2wLe0'

加密

flask-unsign --sign --cookie "json数据" --secret '密钥'

如果只是解密的话也可以用脚本

#!/usr/bin/env python3
import sys
import zlib
from base64 import b64decode
from flask.sessions import session_json_serializer
from itsdangerous import base64_decode


def decryption(payload):
payload, sig = payload.rsplit(b'.', 1)
payload, timestamp = payload.rsplit(b'.', 1)

decompress = False
if payload.startswith(b'.'):
payload = payload[1:]
decompress = True

try:
payload = base64_decode(payload)
except Exception as e:
raise Exception('Could not base64 decode the payload because of '
'an exception')

if decompress:
try:
payload = zlib.decompress(payload)
except Exception as e:
raise Exception('Could not zlib decompress the payload before '
'decoding the payload')

return session_json_serializer.loads(payload)


if __name__ == '__main__':
print(decryption("eyJpc19hZG1pbiI6MCwidXNlcl9pZCI6ImFub255bW91cyJ9.ZyyyoQ.M_fymfx7RJybrgZwoZv_hp2wLe0".encode()))#把需要加密的flasksession的值换一下就行

CRYPTO

sagemath(整合的数学软件,基于python)

  • 用的不是太多,每次就是上去跑下脚本
  • 安装教程

yafu(RSA因数分解工具)

  • 下载

yafu download | SourceForge.net

  • 使用
yafu-x64.exe factor(6)
yafu-x64.exe factor(@) -batchfile data.txt

注意:

(1)n为十进制

(2)txt文件结尾必须有一个换行符,如下图

(3)该命令会删除这个txt,请注意保存。

MISC

mp3stego(mp3音频隐写提取)

  • 下载

https://www.petitcolas.net/steganography/mp3stego/

  • 命令

    -X 提取隐藏数据
    -P 用密码用于嵌入
    -A 编写AIFF输出PCM声音文件
    -s 仅在此SB(仅调试)
    inputBS 编码音频的输入位
    outPCM 输出PCM声音文件(DFLT输入+.AIF | .pcm)
    outhidden 输出隐藏的文本文件(dflt inputbs+.txt)

  • 使用

将需要加/解密的音频放在MP3stego同一文件夹下

然后在cmd中输入以下命令

Decode.exe -X -P 密码 要尝试提取的文件名

UsbKbCracker(USB流量文本提取)

  • 下载

https://github.com/P001water/UsbKbCracker

  • 命令
    python UsbKeyboardDataexp.py -f pcapfile -e fieldvalue [-Y “xxx”]
    -f 流量文件
    -Y 过滤器条件[选项可选]
    -e 导出协议字段

  • 使用

先将wireshark中的tshark放进环境变量中,达到如下效果

image-20250420132354740

将需要解码流量放在同一文件夹下,cmd输入以下命令

python UsbKbCracker.py -f file -e usbhid.data
举例
python UsbKbCracker.py -f flag.pcap -e usbhid.data

pcap2track(USB流量轨迹提取)

  • 下载

https://github.com/p0ise/pcap2track

  • 使用

还是要确保tshark可用,然后cmd以下命令

python pcap2track.py [-h] [-o OUTPUT] pcapng_file [button_mask]
举例
python pcap2track.py flag.pcap

snow隐写提取

  • 下载

https://gitcode.com/open-source-toolkit/a4d1d/

  • 使用
隐写
snow.exe -C -m "被隐藏的信息" -p "密码" 文件名
解密
snow.exe -p "密码" -C 文件

RStudioPortable(镜像提取)

  • 下载

R-Studio.rar

  • 使用

图形化页面,跟着操作使用就行了,在SWCTF第一次遇到,感觉img镜像提取挺有用