《Python网络安全项目实战》项目5 编写网站扫描程序

《Python网络安全项目实战》项目5 编写网站扫描程序

  • 项目目标:
  • 任务5.1 暴力破解网站目录和文件位置
    • 任务描述
    • 任务分析
    • 任务实施
    • 相关知识
    • 任务评价
  • 任务5.2 制作网页JPG爬虫
    • 任务分析
    • 任务实施
    • 相关知识
    • 任务评价
    • 任务拓展

WEB网站安全渗透测试过程中需要进行目录扫描和网站爬行,网上可以找到一些不错的工具软件,但是对于别人写的工具是否安全可靠有待商榷,所以我们如果能够写出自己的网站扫描和爬行程序,对于我们的工作会有极大的帮助。
使用Python的标准网络模块编写网络工具软件非常方便,这里我们使用Python完成网站扫描程序的编写。

项目目标:

 熟悉使用Python进行网站扫描程序的编写。

任务5.1 暴力破解网站目录和文件位置

任务描述

当我们通过sql注入等方式得到网站的数据库时,由于后台一般是隐藏起来的,所以我们想要登陆后台的话,还是要手工或者以暴力破解的方式找到后台。

任务分析

对一个站点目录和文件进行扫描,那么就需要用Python3环境下requests模块。扫描目录主要是对网站地址发出请求,若网站存在这个地址则会返回状态码200,如果不存在则会返回404,如果是没有权限访问,或者是其他一些情况,都会有相应的状态码,我们主要是需要访问成功的状态码和地址就可以了。
Requests 是使用 Apache2 Licensed 许可证的 HTTP 库, 支持 HTTP 连接保持和连接池,支持使用cookie 保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。本次任务要扫描的WWW服务器就搭建在本机上,我们在本机搭建了一个Discuz网站,计划扫描的网址是:http://127.0.0.1/Discuz/upload。
pathlist.txt是预先准备的字典文件,包含网站常用文件路径的字符串列表。
应用字典碰撞的原理,使用上万条字典条目进行碰撞。字典中包括常用网站的含有路径的文件名,获得有反馈的条目记录,其中就体现出了常用网站的目录结构。

任务实施

实验环境:windows 7、phpstudy、php5.4.45、apache、mysql5.0.10。
【步骤1】:建立pathlist.txt,我们将这些文件夹的名字保存进一个TXT文件中,建立一个目录字典,再加一些这个目录中没有的文件名扩展程序可查找文件范围,如图5-1-1所示。
在这里插入图片描述

图5-1-1 建立字典文件
【步骤2】:对网站的请求我们需要用requests模块中的一些方法,所以在写之前需要引用requests模块,如图5-1-2所示。
在这里插入图片描述

图5-1-2 引用requests模块
【步骤3】:我们需要对一个网站进行扫描,那么就需要一个网站的地址,和一个扫描的字典,如图5-1-3所示。
在这里插入图片描述

图5-1-3 定义变量接收网址和字典
【步骤4】:因为我们要将字典与网站路径结合形成一个新的url,每形成一个新的url,就对这个url进行一次请求,所以我们用for来实现,如图5-1-4所示。
在这里插入图片描述

图5-1-4 对地址进行请求,并返回状态码
【步骤5】:在接收到每个地址返回的状态码之后,我们需要对这些信息进行判断和输出,如图5-1-5所示。
在这里插入图片描述
在这里插入图片描述

图5-1-5 对结果进行判断打印
【步骤6】:在编写完python程序之后,我们对程序进行测试,在本地安装phpstudy,打开phpstudy的安装目录,www文件夹是用来放置web站点文件的,如图5-1-6所示。
在这里插入图片描述

图5-1-6 phpstudy目录
【步骤7】:打开www文件夹,我们将Discuz站点放置进来,如图5-1-7所示。
在这里插入图片描述

图5-1-7 所有网站主目录
【步骤8】:Discuz需要在web界面去安装一下,一路下一步就可以安装完成,打开Discuz的目录,所有的网站文件都会放在upload文件夹中,如图5-1-8所示。
在这里插入图片描述

图5-1-8 Discuz站点安装目录
【步骤9】:Discuz网站的目录中有一些文件和文件夹,这些都是我们需要用python来扫描的,如图5-1-9所示。
在这里插入图片描述

图5-1-9 Discuz网站主目录
【步骤10】:做完这些,我们启动我们的phpstudy,看到apache和mysql成功运行,就可以了,如果启动不成功,则重试一次,如图5-1-10所示。
在这里插入图片描述

图5-1-10 启动运行phpstudy
【步骤11】:看网站是否可以打开,打开浏览器,输入6,如图5-1-11所示。
在这里插入图片描述

图5-1-11 访问Discuz网站
【步骤12】:运行我们之前写好的python脚本,扫描搭建好的站点,扫描结果列出了我们需要的网站目录,如图5-1-12所示。
在这里插入图片描述

图5-1-12 运行脚本显示结果
【步骤13】:用netstat -an命令查看本地的网络连接端口,如图5-1-13所示。
在这里插入图片描述

图5-1-13 查看网络连接

相关知识

Python目录操作方法

  1. 创建目录
    os.mkdir(“file”)
  2. 复制文件
    shutil.copyfile(“oldfile”,“newfile”)
    #oldfile和newfile都只能是文件
    shutil.copy(“oldfile”,“newfile”)
    #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
  3. 复制文件夹
    shutil.copytree(“olddir”,“newdir”)
    #olddir和newdir都只能是目录,且newdir必须不存在
  4. 重命名文件(目录)
    os.rename(“oldname”,“newname”)
    #文件或目录都是使用这条命令
  5. 移动文件(目录)
    shutil.move(“oldpos”,“newpos”)
  6. 删除文件
    os.remove(“file”)
  7. 删除目录
    os.rmdir(“dir”)
    #只能删除空目录
    shutil.rmtree(“dir”)
    #空目录、有内容的目录都可以删
  8. 转换目录
    os.chdir(“path”)
    #换路径

任务评价

在这里插入图片描述

合计 50
任务拓展
Time模块的主要功能是什么?

任务5.2 制作网页JPG爬虫

任务描述

在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。
常规的做法就是通过鼠标右键,选择另存为。但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度。
这里可以通过python来实现这样一个简单的爬虫功能,把我们想要的图片爬取并下载到本地。下面就看看如何使用python来实现这样一个功能。

任务分析

利用Python抓取网络图片的步骤:

  1. 根据给定的网址获取网页源代码。
  2. 利用正则表达式把源代码中的图片地址过滤出来。
  3. 根据过滤出来的图片地址下载网络图片。

任务实施

实验环境:centos7.2、Python2.7。
【步骤1】:代码注释要用到中文所以加载utf-8字符集,对网站的读取我们需要用到urllib模块中的一些方法,所以在写之前需要引用urllib模块,后面获取图片地址要用到正则表达式,所以加载re模块,如图5-2-1所示。
在这里插入图片描述

图5-2-1 引用utllib和re模块
【步骤2】:我们需要定义一个过程函数来打开一个URL地址,如图5-2-2所示。
在这里插入图片描述

图5-2-2 定义打开URL的过程函数
【步骤3】:我们需要定义一个过程函数在获取图片地址,如图5-2-3所示。
在这里插入图片描述

图5-2-3 定义获得图片地址的过程函数
【步骤4】:把筛选的图片地址通过for循环遍历并保存到本地,并且对html对象设置图片下载地址,并print输出结果,如图5-2-4所示。
在这里插入图片描述
在这里插入图片描述
图5-2-4 对结果进行判断打印
【步骤5】:进入脚本所在目录,如图5-2-5所示。
在这里插入图片描述

图5-2-5 进入Python脚本所在目录
【步骤6】:右键点击终端中运行python test1.py,如图5-2-6所示。
在这里插入图片描述

图5-2-6 执行Python脚本
【步骤7】:在目录获得图片,如图5-2-7所示。
在这里插入图片描述

图5-2-7 图片被下载到目录中

相关知识

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen。
实例:
字符串;tel:086-0666-88810009999
原始正则:“^tel:[0-9]{1,3}-[0][0-9]{2,3}-[0-9]{8,11}KaTeX parse error: Undefined control sequence: \d at position 102: …价简写后正则写法:"^tel:\̲d̲{1,3}-[0]\d{2,3…” ,简写语法不是所有语言都支持。
以下为元字符速查表:
在这里插入图片描述
在这里插入图片描述

任务评价

在这里插入图片描述

任务拓展

把代码中的for循环改为while循环并且运行,验证输出结果。
项目评价
在这里插入图片描述

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

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

相关文章

时序论文20|ICLR20 可解释时间序列预测N-BEATS

论文标题:N-BEATS N EURAL BASIS EXPANSION ANALYSIS FOR INTERPRETABLE TIME SERIES FORECASTING 论文链接:https://arxiv.org/pdf/1905.10437.pdf 前言 为什么时间序列可解释很重要?时间序列的可解释性是确保模型预测结果可靠、透明且易…

硬件工程师之电子元器件—二极管(4)之热量对二极管温度特性的影响

写在前面 本系列文章主要讲解二极管的相关知识,希望能帮助更多的同学认识和了解二极管。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 二极管 7. 热量对二极管温度特性的影响 半导体器件的电气特性通常对环境温度和工作结温敏感。 Si二极管的特性在工作范围内通常如下…

Java算法OJ(7)随机快速排序

目录 1.前言 2.正文 1. 快速排序的基本原理 2. 随机快速排序的改进 3. 随机快速排序的步骤 3.小结 1.前言 哈喽大家好吖,今儿给大家带来算法—随机快速排序相关知识点,废话不多说让我们开始。 2.正文 在了解随机快排之前,先了解一下…

基于 Python Django 的二手房间可视化系统分析

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

用MVVM设计模式提升WPF开发体验:分层架构与绑定实例解析

MVVM(Model-View-ViewModel)是一种架构模式,广泛应用于现代前端开发,尤其是在微软的WPF(Windows Presentation Foundation)应用程序中。它旨在通过将视图(UI)与业务逻辑(…

如何进行产线高阶能耗数据的计算和可视化?

一、前言 在当前经济下行时期,越来越来多企业开始对产线进行数字化转型,提高企业竞争力。在产线数字化转型过程中,产线高阶能耗数据的计算和可视化是比较重要的一环,今天小编就和大家分享如何对产线能耗数据进行计算和可视化。 …

亲测有效:Maven3.8.1使用Tomcat8插件启动项目

我本地maven的settings.xml文件中的配置&#xff1a; <mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url> </mirror>…

开源项目推荐——OpenDroneMap无人机影像数据处理

实景三维作为GIS最火的课题&#xff0c;最近在想做一套自己的三维构建工具&#xff0c;考察了几个开源项目&#xff0c;把自己的搜索过程用csdn记录下来&#xff0c;希望也能帮助到各位同仁。 OpenDroneMap&#xff08;ODM&#xff09;是一个开源项目&#xff0c;旨在处理无人…

蓝桥杯c++算法学习【2】之搜索与查找(九宫格、穿越雷区、迷宫与陷阱、扫地机器人:::非常典型的必刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 关注博主&#xff0c;更多蓝桥杯nice题目静待更新:) 搜索与查找 一、九宫格 【问题描述】 小明最近在教邻居家的小朋友小学奥数&#xff0c;而最近正好讲述到了三阶幻方这个部分&#xff0c;三 …

Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解

title: Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解 date: 2024/11/14 updated: 2024/11/14 author: cmdragon excerpt: schema:beforeWrite 钩子是 Vite 提供的一个功能强大的生命周期钩子,允许开发者在 JSON Schema 被写入之前执行自定义操作。利用这个钩子,您可以…

当你想要conda安装遇到UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel的问题

想要装个虚拟环境&#xff0c;结果遇到404。 看了第一个GitHub帖子中的一句话 UnavailableInvalidChannel: The channel is not accessible or is invalid. Navigator not launching. Issue #9473 conda/conda GitHub 想说那我就把这个not found的channel删掉吧&#xff…

DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链

一、pop1链的跟踪 1、路由关系 2、漏洞触发口unserialize(base64_decode($data)); 2、__destruct()&#xff0c;魔术法方法调用close函数方法 3、未找到利用链&#xff0c;尝试__call魔术方法 4、逆推找call_user_func 函数 第一部分 namespace yii\db; class BatchQueryResu…

C++STL容器——map和set

目录 一.关联式容器 二.键值对 三.树形结构的关联式容器 1.set 2.map 3.multiset和multimap 四.整体代码 map_set.cpp 一.关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、 forward_list(C11)等&…

Java 责任链模式 减少 if else 实战案例

一、场景介绍 假设有这么一个朝廷&#xff0c;它有 县-->府-->省-->朝廷&#xff0c;四级行政机构。 这四级行政机构的关系如下表&#xff1a; 1、县-->府-->省-->朝廷&#xff1a;有些地方有完整的四级行政机构。 2、县-->府-->朝廷&#xff1a;直…

Rocky、Almalinux、CentOS、Ubuntu和Debian系统初始化脚本v9版

Rocky、Almalinux、CentOS、Ubuntu和Debian系统初始化脚本 Shell脚本源码地址&#xff1a; Gitee&#xff1a;https://gitee.com/raymond9/shell Github&#xff1a;https://github.com/raymond999999/shell脚本可以去上面的Gitee或Github代码仓库拉取。 支持的功能和系统&am…

EXCEL延迟退休公式

如图&#xff1a; A B为手工输入 C2EOMONTH(A2,B2*12) D2EOMONTH(C2,IF(C2>DATEVALUE("2025-1-1"),INT((DATEDIF(DATEVALUE("2025-1-1"),C2,"m")4)/4),0)) E2EOMONTH(A2,B2*12IF(EOMONTH(A2,B2*12)>DATEVALUE("2025-1-1"),INT(…

ARM架构中断与异常向量表机制解析

往期内容 本专栏往期内容&#xff0c;interrtupr子系统&#xff1a; 深入解析Linux内核中断管理&#xff1a;从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分…

论文翻译 | The Capacity for Moral Self-Correction in Large Language Models

摘要 我们测试了一个假设&#xff0c;即通过人类反馈强化学习&#xff08;RLHF&#xff09;训练的语言模型具有“道德自我纠正”的能力——避免产生有害的输出——如果指示这样做的话。我们在三个不同的实验中发现了支持这一假设的有力证据&#xff0c;每个实验都揭示了道德自…

华为云前台用户可挂载数据盘和系统盘是怎么做到的?

用户可以选择磁盘类型和容量&#xff0c;其后台是管理员对接存储设备 1.管理员如何在后台对接存储设备&#xff08;特指业务存储&#xff09; 1.1FusionSphere CPS&#xff08;Cloud Provisionivice&#xff09;云装配服务 它是first node https://10.200.4.159:8890 对接存…

【Excel】身份证号最后一位“X”怎么计算

大多数人身份证号最后一位都是数字&#xff0c;但有个别号码最后一位却是“X"。 如果你查百度&#xff0c;会得到如下答案&#xff1a; 当最后一位编码是10的时候&#xff0c;因为多出一位&#xff0c;所以就用X替换。 可大多数人不知道的是&#xff0c;这个10是怎么来的…