信息搜集篇
WEB 1
F12 审查元素,在注释中发现flag。
WEB 2
方法1:绕过js
使用edge快捷键ctrl + shift + i
,或通过浏览器菜单栏打开源代码,查看flag。
方法2:禁用js
将该网页调用的js禁用
右键或F12生效。
解析 :
##源代码中的js:
<script type="text/javascript">
window.oncontextmenu = function(){return false};
window.onselectstart = function(){return false};
window.onkeydown = function(){if (event.keyCode==123){event.keyCode=0;event.returnValue=false;}};
</script>
这段JavaScript代码主要用于禁止某些用户操作,具体来说:
window.oncontextmenu = function(){return false};
:这行代码禁止了右键单击的上下文菜单。通常,当你在网页上右键单击时,浏览器会显示一个上下文菜单,包括“查看页面源代码”、“保存为”、“打印”等选项。window.onselectstart = function(){return false};
:通常,当你在网页上拖动鼠标时,可以选择并高亮显示文本。这行代码阻止了用户在页面上选择文本。window.onkeydown=function(){if(event.keyCode==123){event.keyCode=0;event.returnValue=false;}};
:这行代码阻止了用户按下F12键。F12通常用于打开浏览器的开发者工具,此代码阻止了这个默认行为。这里的123是F12键的键码。总的来说,这段代码禁用了一些浏览器的默认操作,比如:查看或复制页面内容,或者查看页面的源代码。
WEB 3
抓包
根据提示抓包,查看响应头,发现flag。(使用burpsuite等抓包软件或浏览器抓包都可以)
WEB 4
robots.txt
访问robots.txt,访问存放flag的文件
发现flag
解析:
robots.txt
是一个在网站的根目录下的文本文件,用来告诉搜索引擎爬虫(也称为机器人)哪些页面可以抓取,哪些不可以。这个文件使用了 “Robots Exclusion Standard”(机器人排除标准),也被称为 “robots exclusion protocol” 或 “robots.txt protocol”。一个基本的
robots.txt
文件可能看起来像这样:User-agent: * Disallow: /private/ Allow: /public/
这个文件的含义是:
User-agent: *
:这一行告诉所有的搜索引擎爬虫(标识为*
)这个规则适用于它们。Disallow: /private/
:这一行告诉爬虫不要抓取网站上/private/
路径下的任何页面。Allow: /public/
:这一行告诉爬虫可以抓取网站上/public/
路径下的任何页面。需要注意的是,
robots.txt
文件的规则并不是强制性的,也就是说,爬虫可以选择不遵守这些规则。然而,大多数尊重开发人员都会尊重并遵守robots.txt
的规则。(或许)
WEB 5
.phps
根据提示,下载index.phps文件,查看flag。
解析:
.phps
文件是 PHP 源代码文件,“s” 代表 “source”。这种文件类型通常用于在浏览器中显示 PHP 源代码,而不是执行它。当你通过浏览器访问.phps
文件时,服务器会将 PHP 代码以纯文本形式发送,浏览器会将其显示出来,而不会尝试运行它。这对于想要分享或展示 PHP 代码的开发者来说非常有用。然而,
.phps
文件可能会暴露敏感信息,例如数据库连接信息、密码等。因此,如果一个网站目录下存有.phps
文件,需要确保这些文件不包含任何敏感信息,或者对这些文件进行适当的访问控制。如果你在网站目录下发现
.phps
文件,可能是因为:
- 开发者想要展示一些 PHP 代码的例子或教程。
- 开发者忘记删除或误上传了
.phps
文件。- 开发者故意留下
.phps
文件以便于调试或测试。无论哪种情况,都应确保这些文件不会泄露任何敏感信息。
WEB 6
www.zip
访问下载www.zip文件,解压查看源代码,发现flag。
解析:
很多提供web服务的中间件(如nginx)默认生成的网站目录都是
www
目录,因此很多开发者在打包备份代码的时候,直接选择压缩www
文件,产生了www.zip
文件。如果该文件被存储在用户可访问的路径下,就可能导致源码备份文件的泄露。
WEB 7
git版本控制
直接访问.git/index.php
,发现flag。
解析:
Git 是一个分布式版本控制系统,用于跟踪文件的更改并协作开发项目。利用git可以快速对应用进行版本升级和回退。学习git可以参考xirong的my-git项目。【xirong/my-git: Individual collecting material of learning git(有关 git 的学习资料) (github.com)】
.git
是一个隐藏目录,它在一个 Git 仓库的根目录中。这个目录包含了所有的 Git 仓库数据和元数据,包括提交历史,远程仓库的链接,以及其他配置信息。如果git被布放在实际生产环境中,就可能导致以上关键信息的泄露。这个目录的结构如下:
HEAD
文件:包含一个指向当前检出分支的引用。config
文件:包含项目特定的配置选项。description
文件:仅用于 GitWeb 程序,忽略它没有关系。hooks
目录:包含客户端或服务器的钩子脚本。info
目录:包含全局排除文件。objects
目录:包含所有数据的存储区。refs
目录:包含指向数据 (主要是提交对象) 的指针。index
文件:表示当前检出的快照。在大多数情况下,你不应直接操作
.git
目录。相反,你应该使用 Git 命令行工具或其他图形界面的 Git 工具来管理你的仓库。直接修改.git
目录可能会导致仓库损坏。
WEB 8
svn版本控制
直接访问/.svn/,查看flag
解析:
.svn
目录是 Subversion 版本控制系统的工作副本元数据目录。在 Subversion 的早期版本中,每个项目目录下都会有一个.svn
目录。然而,在 Subversion 1.7 及以后的版本中,.svn
目录只存在于工作副本的根目录中。
.svn
目录存储了许多重要的信息,包括:
- 你的本地修改
- 从服务器上取回的最新版本的缓存
- 用于执行更新和提交操作的临时文件
- 其他的版本控制信息
以下是
.svn
目录的一些主要组件:
entries
文件:列出了工作副本的状态和版本信息。format
文件:包含工作副本的格式版本。pristine
目录:存储从仓库检出的原始文件的副本。tmp
目录:用于临时操作,如合并和更新。和
.git
目录一样,你通常不应该直接修改.svn
目录。如果你需要执行版本控制操作,你应该使用svn
命令行工具或其他的 Subversion 客户端。直接修改.svn
目录可能会导致工作副本损坏。
WEB 9
vim
访问下载index.php.swp
文件,下载vim编辑过程中临时存储的缓存文件,查看flag。
解析:
在你使用 Vim 编辑器打开并编辑文件时,Vim 会在同一目录下创建一个以
.swp
为扩展名的隐藏临时文件。这个.swp
文件用于存储你对文件所做的未保存的更改,同时也用于防止多个实例同时编辑同一文件。如果 Vim 编辑器异常退出(例如,系统崩溃或终端会话意外断开),
.swp
文件不会被删除,因此当你下次尝试打开同一文件时,Vim 会警告你文件可能正在被另一个 Vim 实例编辑,或者 Vim 上次编辑此文件时可能已经异常退出。在这种情况下,你有几个选项:
恢复文件:如果你想从
.swp
文件中恢复未保存的更改,你可以使用以下命令:vim -r filename
这将打开文件并尝试从
.swp
文件中恢复更改。删除
.swp
文件:如果你确定不需要从.swp
文件中恢复任何更改,你可以安全地删除该文件。在 Vim 中,当它警告你.swp
文件存在时,你可以选择[D]elete
选项来删除它。忽略
.swp
文件:如果你想忽略.swp
文件并打开原始文件,你可以选择[O]pen Read-Only
选项,或者在 Vim 中使用以下命令来打开文件:vim -n filename
这将忽略
.swp
文件并以只读模式打开文件。在处理
.swp
文件时,你应该小心,因为错误地删除.swp
文件可能会导致你丢失未保存的更改。
WEB 10
cookie
flag隐藏在网页cookie的flag值中。
解析:
cookie
/sessions
/token
/jwt
本质并不复杂,都是网络应用中管理和维持用户会话的手段(鉴权方式),下面是对每个概念的简单解释:
- Cookie:Cookie 是服务器发送给用户浏览器并存储在浏览器上的一小段数据。它们通常用于记住用户的某些信息,如登录状态、购物车内容、用户偏好等。服务器可以在用户的每次请求中读取这些信息,以个性化用户体验或维护会话状态。
- Sessions:会话是一种在多个请求之间保持特定用户的状态的方法。会话数据可以存储在服务器上(例如,在内存或数据库中),也可以存储在客户端(例如,在 Cookie 中)。服务器通常使用一个唯一的会话 ID 来跟踪每个用户的会话。
- Token:令牌是一种认证方法,通常用于无状态的 RESTful API。令牌是在用户成功登录后由服务器生成并发送给客户端的。客户端在后续的每个请求中都会发送这个令牌,以证明其身份。令牌可以包含用户的认证信息和/或授权信息。
- JWT (JSON Web Token):JWT 是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为 JSON 对象。这些信息可以被验证和信任,因为它们是数字签名的。JWT 可以用于身份验证和信息交换。JWT 通常由三部分组成:头部(header)、载荷(payload)和签名(signature)。
详细解释请自行利用网络资源学习,这里放一篇
Banshee
的综述文章,阅读时长十分钟左右。【认证授权 - 简单聊一聊Cookie、Session、Token、JWT的区别和作用 - 个人文章 - SegmentFault 思否】
WEB 11(环境已挂)
域名解析记录
预计结果:
实际测试:
解析:
这里只对域名解析做简单介绍,利用域名解析可以实现某些社工攻击,例如:域名欺骗实现的钓鱼网站欺骗。
域名解析记录,也称为 DNS 记录,是保存在 DNS 服务器上的信息。它们将人类可读的网址(例如,[www.example.com)映射到机器可读的IP 地址(例如,192.0.2.1)。这是因为计算机和其他设备使用 IP 地址在互联网上找到和交流。
以下是一些常见类型的 DNS 记录:
- A 记录:这是最常见的 DNS 记录类型,用于将域名映射到一个 IPv4 地址。
- AAAA 记录:这是 A 记录的 IPv6 版本,将域名映射到一个 IPv6 地址。
- CNAME 记录:CNAME 记录将一个域名映射到另一个域名,而不是直接映射到一个 IP 地址。这对于指向其他域名,或者为单个 IP 地址提供多个别名很有用。
- MX 记录:MX 记录(邮件交换记录)用于指定处理特定域名的电子邮件的邮件服务器。
- TXT 记录:TXT 记录包含任何文本信息,通常用于验证域名所有权,或者提供 SPF、DKIM 或 DMARC 等电子邮件验证信息。
- NS 记录:NS 记录(名称服务器记录)用于指定负责特定域名的 DNS 服务器。
- SRV 记录:SRV 记录(服务记录)用于指定特定服务的服务器位置,例如 SIP 或 XMPP。
- PTR 记录:PTR 记录(指针记录)用于反向 DNS 查找,将 IP 地址映射回域名。这通常用于网络诊断和反垃圾邮件策略。
每个 DNS 记录都有一个 TTL(生存时间),这是在 DNS 缓存中保存记录的时间。TTL 用于减少 DNS 服务器的负载,并提高 DNS 解析的速度。
TXT(Text)记录是 DNS(Domain Name System)中的一种类型,用于向人或机器提供关于该域的一些文本信息。TXT 记录常被用于各种类型的验证,包括 SPF(Sender Policy Framework)记录、DKIM(DomainKeys Identified Mail)记录和 DMARC(Domain-based Message Authentication, Reporting & Conformance)记录,这些都是用于防止垃圾邮件的电子邮件认证方法。
以下是 TXT 记录的一些常见用途:
- SPF 记录:SPF 记录用于防止垃圾邮件。它指定了哪些邮件服务器被允许为你的域名发送邮件。接收邮件的服务器可以检查发件服务器是否在 SPF 记录中,以确定邮件是否可能是垃圾邮件。
- DKIM 记录:DKIM 记录也用于电子邮件安全。它允许接收邮件的服务器验证发件服务器是否有权为你的域名发送邮件,并且邮件内容在传输过程中是否被更改。
- DMARC 记录:DMARC 是 SPF 和 DKIM 的扩展,提供了一种机制,使域名所有者能够指定接收邮件的服务器如何处理未通过 SPF 或 DKIM 检查的邮件。
- 域名所有权验证:许多在线服务,如 Google Search Console、Microsoft Office 365 和 AWS,都要求你添加一个特定的 TXT 记录到你的 DNS 配置中,以验证你对该域名的所有权。
- 其他目的:TXT 记录可以用于任何需要向人或机器提供关于该域的文本信息的目的。
TXT 记录的具体格式可能因用途而异,但通常包括一个或多个“名称=值”对。例如,一个 SPF 记录可能看起来像这样:
v=spf1 ip4:192.0.2.0/24 ip4:198.51.100.123 a -all
这个记录表示,只有 IP 地址在 192.0.2.0/24 或 198.51.100.123 的服务器,或者该域的 A 记录所指定的服务器,才被允许发送邮件。如果邮件来自其他服务器,应该被视为垃圾邮件(
-all
)。
WEB 12
社工(本题意义不大)
根据经验访问/admin,提示登录。
根据提示,使用admin(常用账号)/372619038(网页最下端的联系方式)登录网站,查看flag。
WEB 13
使用手册(常用)
页面最下端有个document
,是该WEB程序的使用说明
通过手册上给出的后台地址和账号密码登录,查看flag
WEB 14
相对路径
很多网站都会有一个editor组件。根据提示访问editor路由,在上传图片的地方遍历目录,找到flag文件的绝对路径后,访问查看flag。
解析:
利用目录遍历漏洞可以服务器内存在的文件进行遍历,这里简单列支一下:
- /etc/passwd:这个文件包含了系统中所有用户的基本信息。尽管密码字段在现代系统中通常是“x”或者"*",但是通过这个文件,攻击者仍然可以获取系统用户列表。
- /etc/shadow:这个文件包含了加密的用户密码。通常,这个文件的权限设置会非常严格,只有超级用户才能读取。
- /etc/group:这个文件包含了系统中所有组的信息,可以让攻击者了解系统的权限分配情况。
- /etc/hosts 和 /etc/resolv.conf:这两个文件包含了系统的网络配置信息,可能会泄露内部网络结构。
- /var/log/:这个目录包含了各种系统和服务的日志文件,可能会泄露出系统的运行情况和敏感操作。
- /home/{user}/.ssh/:这个目录包含了用户的 SSH 密钥,如果攻击者能够获取到这些密钥,他们就可以进行无密码登录。
- /var/www/html 或者其他 Web 服务的文档根目录:这个目录包含了网站的源代码,可能会泄露出网站的运行逻辑和敏感信息。
- 应用的配置文件:网站的目录下往往会存在数据库和服务器的配置文件,可能会泄露数据库的账号密码等敏感信息,利用这些敏感信息可以进行进一步测试。
- /proc/self/environ:这个文件包含了当前进程的环境变量,可能会泄露出敏感信息。
/var/www/html
是 Linux 系统中的一个常见目录,通常被用作网页服务器(如 Apache 或 Nginx)的默认文档根目录。这意味着当你通过 Web 浏览器访问服务器时,服务器将从这个目录中提取并显示文件。在这个目录中,你可能会找到如下内容:
- 静态 HTML 文件
- CSS 样式表
- JavaScript 文件
- PHP 或其他服务器端脚本文件
- 图像和其他媒体文件
这个目录的结构和内容完全取决于你的网站如何设计和组织。例如,你可能会为每个不同的网站部分或页面创建子目录。
请注意,虽然
/var/www/html
是许多 Linux 发行版的默认 web 根目录,但这并不是强制的。你可以在服务器配置中更改文档根目录,让它指向文件系统中的任何位置。
WEB 15
osint
访问/admin
路由,有个忘记密码的功能。
结合提示,记录网页最下端的QQ邮箱
通过QQ查找,获取该用户的居住地:西安,并返回页面重置密码。
使用重置后的密码登录后台,查看flag
解析:
OSINT,全称是"Open Source Intelligence",中文常被翻译为"开源情报"。这是一种情报收集方法,主要依赖于公开、自由可获取的信息源。OSINT的来源包括网络新闻、公开的政府报告、社交媒体、公开的论坛、博客、网站等。
OSINT在很多领域都有应用,比如军事、商业、政策制定、网络安全等。例如,在网络安全领域,OSINT可以用于收集关于目标的信息,如域名、IP地址、员工信息、技术堆栈等。这些信息可以帮助安全研究人员理解目标的网络环境,找到可能的漏洞,进行防御或者(在合法和授权的情况下)攻击。
使用OSINT时,需要注意的是,虽然这些信息是公开的,但是收集和使用这些信息仍然需要遵守法律和道德规定。不应该侵犯他人的隐私,也不应该用于非法的目的。
WEB 16
探针
目录扫描发现tz.php,该路由下承载的是一个雅黑PHP探针
flag在phpinfo信息内
解析:
PHP探针是一个用于检测当前服务器的环境信息的工具,它能够显示出服务器的各种详细参数,如:服务器操作系统、PHP版本、附加组件、服务器接口、网络功能、数据库信息等等。这样可以帮助开发者了解服务器环境,定位问题,进行优化等。
一般的PHP探针是一个PHP文件,你只需要将它上传到你的服务器上,然后通过浏览器访问这个文件,就可以看到服务器的各种信息。
需要注意的是,由于PHP探针会展示出服务器的详细信息,可能会被有恶意的人用来寻找服务器的漏洞,因此在使用完毕后,最好及时删除或者移动到安全的地方。
phpinfo()
本身也可以看作是一个php探针。
WEB 17
数据库备份
访问下载/backup.sql文件,查看flag
WEB 18
JS逆向
查看Flappy_js.js
文件,找到达到一百分时调用的逻辑判断语句
unicode解码,根据提示访问/110.php
,查看flag
WEB 19
前端校验
前端的源码中包含登录校验的js代码,泄露了正确的账号密码。
采用POST方式提交后查看flag。(注意密码的参数名是pazzword,且需要使用POST方式提交)
username=admin&pazzword=a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04
WEB 20
根据提示,访问下载/db/db.mdb
打开文件,查看flag。
解析:
Access数据库是微软旗下的一款基于桌面的数据库管理系统。它不像MySQL,需要在服务器上启用额外的服务去使用,一个mdb文件就是一个数据库,提供了很强的易用性,这也导致access数据库的脱裤成本很低,不需要进行额外的网络访问。
.mdb
文件是一种数据库文件,由 Microsoft Access 创建和使用。MDB 代表 Microsoft DataBase。这种文件类型包含一系列数据,这些数据可以被数据库管理系统 (DBMS) 用于管理和处理信息。MDB 文件可能包含多个表,每个表包含多个字段和记录。这些表可以通过键(通常是一个或多个字段)相互关联,以便在查询时可以从多个表中提取数据。