前言
本文虽然是讲web相关工具,但在在安全领域,没有人是先精通工具,再上手做事的。鉴于web领域繁杂戎多的知识点(工具是学不完的,哭),如果你在本文的学习过程中遇到没有学过的知识点,可以先跳过去,等你学到这里要用到工具时,再从实际例子中学习、利用工具。
(本文工具基本都可以在CTFHub中找到,文章较长,侧边栏有目录以便于观看)
F12开发者工具
常规使用方法
参考文献:
0x01 开发者工具是神马?
是浏览器自带的一个开发调试工具,因为可以用F12快捷键直接启动,所以简称为F12工具
0x02 如何启动
(三种方法)
1、F12
2、ctrl+shift+i
3、鼠标右键——>检查
0x03 开发者工具的标签介绍
英文 | 中文 |
Elements | 查看器 |
Console | 控制台 |
Sourse | 源代码/调试器 |
Network | 网络 |
Performance | 性能 |
Memory | 内存 |
Application | 应用 |
查看器:主要用来做元素的定位
控制台:调试错误等
调试器(源代码):前端代码的调试,断点等
网络:测试用来抓包、进行分析进行一些测试问题的定位
性能:前端页面的性能
存储(应用):存储cookie缓存等
0x04 常用标签详细介绍
一、查看器
1.查看元素的代码
点击左上角的箭头图标(或按快捷键Ctrl+Shft+C)进入选择元素模式,
然后从页面中选择需要查看的元素,然后可以在开发者工具元素(Elements) -栏中定位到该元素源代码的具体位置。
2.查看元素的属性
定位到元素的源代码之后,可以从源代码中读出该元素的属性。如class、 src、 width等属性的值。
3.修改元素的代码与属性
点击元素,然后查看右键菜单,可以看到chrome提供的可对元素进行的操作:选择Edit as HTML选项时,元素进入编辑模式,可以对元素的代码进行任意的修改。
当然,这个修改也仅对当前的页面渲染生效,不会修改服务器的源代码,所以这个功能也是作为调试页面效果而使用。可以把百度热搜修改一下:
非凡中国改为重庆森林不在重庆(这里仅仅修改前端,也就是只有我们的设备会这样显示)
二、控制台
用途: --开发用的测试
打印控制台的查看,用于测试查看报错内容(前端页面报错),前端开发编写js脚本调试前端代码,或则打印分析问题。
三、Network/网络
1、用途:这是测试用的最多的一个模块,主要用于进行测试问题的分析和定位,这个部分记录了前后端的交互,我们与服务器请求、响应的各个数据包记录在这里。
前端和后端信息通过接口传输,Network记录了接口信息: (接口封装http协议–定义头部)
http请求消息:请求行(请求方法)、请求头、请求体–客户端发送
http响应消息:响应行(响应状态码),响应头,响应体-服务器回应
2、报文分析
(可以参考作者的另一篇文章:HTTP的工作原理-CSDN博客)
1)状态
即http的响应状态码:
200 (服务器收到我的请求并且给了我一个回应)
404(资源不存在或者地址给错了)
500 503(表明服务器有问题)
302 304 (重定向)
2)方法: http请求方法- get post put patch
3)域名:服务器的域名或者IP +端口
4)文件和类型: html、css、js 、png等
5)发起者:请求怎么发起的,比如script: 页面是由script脚本处理的时候发送的;
6)传输和大小:传输的文件及大小
7)详细报文内容:消息头,cookies, 请求,响应,耗时
四、Memory/存储(应用)
用途: 主要存储一些cookies和前端数据等。
本地存储和会话存储主要是前端开发人员在前端设置,一旦数据保存在本地后,就可以避免再向服务器请求数据,因此减少不必要的数据请求,减少数据在浏览器和服务器间不必要地来回传递。
本地存储和会话存储的操作代码完全相同,它们的区别仅在于数据的寿命。
本地存储: 保存不受时间限制,用于长期保存网站的数据;除非用户自己删除,否则不会消失;并且站内任何页面都可以访问该数据;主要用来保存访客将来还能看到的数据。
会话存储: 用于临时保存针对一一个窗口(或标签页)的数据,保存受时间限制,当前窗口一旦关闭,内容就会被浏览器删除。会话存储则用于保存那些需要从一个页面传递给下一个页面的数据。
Hackbar
(归属于开发者工具一栏,故放在此处)
参考文献:
渗透测试-浏览器插件-Hackbar的安装与使用教程-CSDN博客
0x01 介绍
Hackbar是一个浏览器中的一个插件,它虽然类似于地址栏,但在此基础上进行了完善,是一个功能集成的“地址栏promax”。hackbar相对于平常的地址栏具有更多功能,而且它里面的数据不受服务器的相应触发的重定向等其它变化的影响。
0x02 使用
Load URL:复制地址栏中的地址(主要使用下图第一个hackbar)
Split URL:剪切地址
正常情况下,我们在地址栏按enter键会直接跳转到我们输入的网址,并不能切断地址,而在hackbar中可以在做到这一点
Execute:执行HackBar中的网址,
或是发送GET请求、或是发送POST请求、或是……
Post data:以post的方式提交数据
Referrer:在Referrer处编辑、提交数据
User Agent:在User Agent处编辑、提交数据
Cookie:在Cookie处编辑、提交数据
以上四项的使用请见下图(下图是四项全部选择,具体使用过程中用哪个选哪个即可)
Encyption:四种加密方式
Encoding:三种编码方式(注意只有三种,但是每种都可以编、解码,encode是编码,decode是解码)
SQL:提供一些方便查询的语句。
应用举例:
字段数是10的时候,我们需要手动打出and 1=2 union select 1,2,3,4,5,6,7,8,9,10,这样做会很麻烦。我们通过hackbar的sql选项里面的union select statement在其中输入字段数,hackbar会自动的帮助我们输入那一大串文字。
xss:提供一些XSS攻击语句。
Burpsuite
参考文献
Getting started with Burp Suite Professional / Community Edition - PortSwigger
BurpSuite超详细安装教程-功能概述-配置-使用教程---(附下载链接)
0x01 介绍
BurpSuite是渗透测试、漏洞挖掘以及Web应用程序测试的最佳工具之一,是一款用于攻击web 应用程序的集成攻击测试平台,可以进行抓包、重放、爆破,包含许多工具,能处理对应的HTTP消息、持久性、认证、代理、日志、警报。
0x02 简单了解
尽量在实际例子中学习bp的应用,本文仅仅是简单了解,若要深度学习,请移步作者的其他文章,学习bp的实际应用。
- Target(目标)——显示目标目录结构的的一个功能
- Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截、查看、修改在两个方向上的原始数据流。
- Spider(蜘蛛)——应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
- Scanner(扫描器)——高级工具,执行后,它能自动地发现web 应用程序的安全漏洞。
- Intruder(入侵)——一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
- Repeater(中继器)——一个靠手动操作来触发单独的HTTP 请求,并分析应用程序响应的工具。
- Sequencer(会话)——用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
- Decoder(解码器)——进行手动执行或对应用程序数据者智能解码编码的工具。
- Comparer(对比)——通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
- Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
- Options(设置)——对Burp Suite的一些设置。
注意:bp最好配合浏览器的扩展插件使用,这样就可以快速代理拦截,具体请见参考文章的第二篇
Curl命令
参考文献
Curl Cookbook(后两文是阮一峰对第一篇文章的翻译)
curl网站开发指南 - 阮一峰的网络日志(初学者教程)
0x01 介绍
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思,即client URL。
它的功能非常强大,命令行参数多达几十种。
0x02 使用
1、查看网页源码
直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短):
curl www.sina.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.sina.com.cn/">here</a>.</p>
</body></html>
如果要把这个网页保存下来,可以使用`-o`参数,这就相当于使用wget命令了。
curl -o [文件名] www.sina.com
2、自动跳转(curl默认是不跟随重定向的)
有的网址是自动跳转的。使用`-L`参数,curl就会跳转到新的网址。
curl -L www.sina.com
键入上面的命令,结果就自动跳转为www.sina.com.cn。
3、HTTP动词
curl默认的HTTP动词是GET,使用`-X`参数可以支持其他动词。
curl -X POST www.example.com
curl -X DELETE www.example.com
另外,使用 -d 参数以后,HTTP 请求会自动加上标头 Content-Type : application/x-www-form-urlencoded,并且会自动将请求转为 POST 方法,因此可以省略-X POST。
curl -d '{"user":"123","pass":"456"}' www.example.com
原文链接:https://blog.csdn.net/qq_35760825/article/details/125319610
4、cookie
使用`--cookie`参数,可以让curl发送cookie。
curl --cookie "name=xxx" www.example.com
至于具体的cookie的值,可以从http response头信息的`Set-Cookie`字段中得到。
`-c cookie-file`可以保存服务器返回的cookie到文件,`-b cookie-file`可以使用这个文件作为cookie信息,进行后续的请求。
curl -c cookies http://example.com
curl -b cookies http://example.com
御剑
(简便易用但有时不好使,唯一的优点是易用,更推荐用下一个工具)
参考文献
后台扫描工具 - 御剑(珍藏版)附下载_御剑后台-CSDN博客
0x01 介绍
御剑后台扫描珍藏版是T00LS大牛的作品,方便查找用户后台登陆地址,同时也为程序开发人员增加了难度,尽量独特的后台目录结构。
附带很强大的字典,字典我们也是可以自己修改的,继续增加规则。
基础规则:
1、扫描线程自定义:用户可根据自身电脑的配置来设置调节扫描线程
2、集合DIR扫描 ASP ASPX PHP JSP MDB数据库 包含所有网站脚本路径扫描
3、默认探测200 (也就是扫描的网站真实存在的路径文件)
0x02 使用
给御剑字典增加新规则
相信大家都知道,有时候御剑自带的字典规则并不能完全的满足我们,因此我们需要手工增加字典规则。
具体步骤如下:
1、打开 “自己的目录\御剑系列工具\御剑后台扫描珍藏版\配置文件”或“自己的目录\御剑系列工具\御剑后台扫描2\御剑配置文件”。
2、打开”PHP.txt”。
这里主要是以PHP程序的后台配置为主,在此文件你完全可以增加一些其它的PHP类型的后台名字。如果你还想修改ASP、ASPX、JSP等,同理。
Dirsearch
参考文献
【网络安全 | 渗透工具】Dirsearch安装使用教程详析-CSDN博客
dirsearch使用教程_dirsearch的使用方法-CSDN博客
0x01 Dirsearch简介
Dirsearch 是一个用于探测Web服务器上的隐藏目录和文件的工具(和御剑功能相似)。它通过发送HTTP请求来尝试访问可能存在的路径,从而找到不列在网站目录页面上的隐藏资源。是和御剑同类型的工具(除了慢没缺点)
Dirsearch 的主要特点包括:
1.多线程:Dirsearch 采用多线程方式进行目录扫描,充分利用系统资源提高扫描效率。
2.字典支持:它支持使用自定义字典文件来进行目录爆破,你可以使用自己的字典文件或使用内置的常用字典。(注:字典必须是文本文件)
3.支持多种形式的网页(asp,php)
4.支持HTTP代理
5.启发式检测无效的网页
6.指定扩展名:你可以选择限制扫描的文件扩展名范围,以便更加精确地进行目录扫描。
7.进度追踪:Dirsearch 提供实时进度追踪,你可以看到当前扫描的进度和已发现的目录和文件。
8.结果输出:完成扫描后,Dirsearch 会生成详细的扫描报告(纯文本,JSON),展示已发现的隐藏目录和文件。
0x02 使用
1 常用使用方式
python dirsearch.py -u http://xxxx //常规使用
python dirsearch.py -u http://xxxx -r //递归扫描,不过容易被检测
python dirsearch.py -u http://xxxx -r -t 30 //线程控制请求速率
python dirsearch.py -u http://xxxx -r -t 30 --proxy 127.0.0.1:8080 //使用代理
2 详细使用方式(由dirsearch --help翻译而成)
用法:dirsearch.py [-u|--url] 目标 [-e|--extensions] 扩展名 [选项]
选项:
--version 显示程序的版本号并退出
-h, --help 显示此帮助消息并退出
必需:
-u URL, --url=URL 目标URL,可以使用多个选项指定多个目标URL
-l PATH, --urls-file=PATH
URL列表文件
--stdin 从标准输入读取URL
--cidr=CIDR 目标CIDR
--raw=PATH 从文件加载原始HTTP请求(使用'--scheme'标志设置方案)
-s SESSION_FILE, --session=SESSION_FILE
会话文件
--config=PATH 配置文件路径(默认为'DIRSEARCH_CONFIG'环境变量,否则为'config.ini')
字典设置:
-w WORDLISTS, --wordlists=WORDLISTS
单词列表文件或包含单词列表文件的目录(以逗号分隔)
-e EXTENSIONS, --extensions=EXTENSIONS
扩展名列表,以逗号分隔(例如:php,asp)
-f, --force-extensions
在每个单词列表条目的末尾添加扩展名。默认情况下,dirsearch只替换%EXT%关键字为扩展名。
-O, --overwrite-extensions
使用指定的扩展名覆盖单词列表中的其他扩展名(通过'-e'选择)
--exclude-extensions=EXTENSIONS
排除的扩展名列表,以逗号分隔(例如:asp,jsp)
--remove-extensions 删除所有路径中的扩展名(例如:admin.php -> admin)
--prefixes=PREFIXES 将自定义前缀添加到所有单词列表条目中(以逗号分隔)
--suffixes=SUFFIXES 将自定义后缀添加到所有单词列表条目中,忽略目录(以逗号分隔)
-U, --uppercase 单词列表转为大写
-L, --lowercase 单词列表转为小写
-C, --capital 单词首字母大写
通用设置:
-t THREADS, --threads=THREADS
线程数
-r, --recursive 递归地进行强制破解
--deep-recursive 在每个目录深度上执行递归扫描(例如:api/users -> api/)
--force-recursive 对找到的每个路径执行递归强制破解,而不仅仅是目录
-R DEPTH, --max-recursion-depth=DEPTH
最大递归深度
--recursion-status=CODES
用于执行递归扫描的有效状态码,支持范围(以逗号分隔)
--subdirs=SUBDIRS 扫描给定URL的子目录(以逗号分隔)
--exclude-subdirs=SUBDIRS
在递归扫描期间排除以下子目录(以逗号分隔)
-i CODES, --include-status=CODES
包括的状态码,以逗号分隔,支持范围(例如:200,300-399)
-x CODES, --exclude-status=CODES
排除的状态码,以逗号分隔,支持范围(例如:301,500-599)
--exclude-sizes=SIZES
根据大小排除响应,以逗号分隔(例如:0B,4KB)
--exclude-text=TEXTS 根据文本排除响应,可以使用多个标志
--exclude-regex=REGEX
根据正则表达式排除响应
--exclude-redirect=STRING
如果此正则表达式(或文本)与重定向URL匹配,则排除响应(例如:'/index.html')
--exclude-response=PATH
排除类似于此页面响应的响应,路径作为输入(例如:404.html)
--skip-on-status=CODES
每当命中这些状态码之一时跳过目标,以逗号分隔,支持范围
--min-response-size=LENGTH
响应的最小长度
--max-response-size=LENGTH
响应的最大长度
--max-time=SECONDS 扫描的最大运行时间
--exit-on-error 发生错误时退出
请求设置:
-m METHOD, --http-method=METHOD
HTTP请求方法(默认为GET)
-d DATA, --data=DATA HTTP请求数据
--data-file=PATH 包含HTTP请求数据的文件
-H HEADERS, --header=HEADERS
HTTP请求标头,可以使用多个标志
--headers-file=PATH 包含HTTP请求标头的文件
-F, --follow-redirects
跟随HTTP重定向
--random-agent 每个请求选择一个随机User-Agent
--auth=CREDENTIAL 认证凭据(例如:user:password或bearer token)
--auth-type=TYPE 认证类型(basic、digest、bearer、ntlm、jwt)
--cert-file=PATH 包含客户端证书的文件
--key-file=PATH 包含客户端证书私钥的文件(未加密)
--user-agent=USER_AGENT
--cookie=COOKIE
连接设置:
--timeout=TIMEOUT 连接超时时间
--delay=DELAY 请求之间的延迟
-p PROXY, --proxy=PROXY
代理URL(HTTP/SOCKS),可以使用多个标志
--proxies-file=PATH 包含代理服务器的文件
--proxy-auth=CREDENTIAL
代理认证凭据
--replay-proxy=PROXY 用于重放已发现路径的代理
--tor 使用Tor网络作为代理
--scheme=SCHEME 原始请求的协议或URL中没有协议时使用的协议(默认为自动检测)
--max-rate=RATE 每秒请求数最大值
--retries=RETRIES 失败请求的重试次数
--ip=IP 服务器IP地址
高级设置:
--crawl 在响应中爬取新路径
显示设置:
--full-url 在输出中显示完整URL(在静默模式下自动启用)
--redirects-history 显示重定向历史记录
--no-color 不使用彩色输出
-q, --quiet-mode 安静模式
输出设置:
-o PATH/URL, --output=PATH/URL
输出文件或MySQL/PostgreSQL数据库URL(格式:
scheme://[username:password@]host[:port]/database-
name)
--format=FORMAT 报告格式(可用:simple、plain、json、xml、md、csv、html、
sqlite、mysql、postgresql)
--log=PATH 日志文件
有关示例配置文件,请参见“config.ini”
Git
如何在 Git 中管理历史记录 | Git tutorial | Nulab(官方教程)
0x01 介绍
Git 是一个用于管理源代码的分布式版本控制系统。版本控制系统会在您修改文件时记录并保存更改,使您可以随时恢复以前的工作版本。
简单来说,git就是便于多人一起编程的一个管理工具(把一个大任务分成许多个小的,然后分配给不同的人就是分布式)
像 Git 这样的版本控制系统可以很容易地
- 跟踪代码历史记录
- 以团队形式协作编写代码
- 查看谁做了哪些更改
0x02 使用
git的使用讲解需较大篇幅,本文不进行展开,具体内容可以参考官方教程
GitHack
0x01 介绍
GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等web安全漏洞。
简单来说,利用git多人协作的时候,可能会有有用的信息泄露,githack就是专门找到并且下载这些信息的。
0x02 使用
(作者是在kali中使用,windows中试了但不咋好使)
进入githack的目录下,在这里打开终端
使用以下代码去下载文件
python2 githack.py URL/.git
dvcs-ripper
参考文献
0x01 介绍
针对SVN泄露的工具——————dvcs-ripper。
(当然不仅仅只有SVN,还可访问分布式版本控制系统:GIT、Mercurial/hg、bzr、...)
0x02 使用
1、运行示例(用于 git):
rip-git.pl -v -u http://www.example.com/.git/
相关文档是上面的写法,作者在使用的时候所有指令都需要加./,比如下面(仅在这里举一例):
./ rip-git.pl -v -u http://www.example.com/.git/
It will automatically do git checkout -f
它会自动执行 git checkout -f
or if you would like to ignore SSL certification verification (with -s):
或者,如果您想忽略 SSL 证书验证(带 -s):
rip-git.pl -s -v -u http://www.example.com/.git/
2、
运行示例(针对 hg):
rip-hg.pl -v -u http://www.example.com/.hg/
It will automatically do hg revert <file>
它会自动执行 hg revert <file>
or if you would like to ignore SSL certification verification (with -s):
或者,如果您想忽略 SSL 证书验证(带 -s):
rip-hg.pl -s -v -u http://www.example.com/.hg/
3、
运行示例(用于 bzr):(前面要有./)
rip-bzr.pl -v -u http://www.example.com/.bzr/
It will automatically do bzr revert
它会自动执行 bzr revert
or if you would like to ignore SSL certification verification (with -s):
或者,如果您想忽略 SSL 证书验证(带 -s):
rip-bzr.pl -s -v -u http://www.example.com/.bzr/
4、运行示例(适用于SVN):
rip-svn.pl -v -u http://www.example.com/.svn/
It will automatically do svn revert -R .
它会自动执行 svn revert -R .
5、运行示例(适用于 CVS):(要加./)
rip-cvs.pl -v -u http://www.example.com/CVS/
This will not rip CVS, but it will display useful info.
这不会翻录 CVS,但它会显示有用的信息。
Python-dsstore
0x01 介绍
这是一个.DS_Store解析工具。
需要从github上下载工具(具体链接可以从ctfhub里找,那里的工具还是很全的),其中包含Apple的.DS_Store文件格式的解析器。在 ./samples/目录中包含一个CTF格式的示例文件,您可以使用以下代码尝试解析器(文档里是用python3指令,作者自己这里用python指令,具体使用读者可自行设置、尝试)。
python3 main.py ./samples/.DS_Store.ctf
0x02 使用
- 将需要解析的文件复制到Python-dsstore文件夹中
- 在Python-dsstore文件处打开cmd
- 输入:
(也可以参考介绍里的方式,放在其他文件夹里,这就需要输入:python main.py .DS_Store的具体文件名
但作者习惯于将.DS_Store文件直接移动到Python-dsstore文件夹中,这样就直接写文件名解析即可)python main.py .DS_Store的具体文件位置