《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循环并且运行,验证输出结果。
项目评价
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React(二)

文章目录 项目地址七、数据流7.1 子组件传递数据给父组件7.1.1 方式一:給父设置回调函数,传递给子7.1.2 方式二:直接将父的setState传递给子7.2 给props传递jsx7.2.1 方式一:直接传递组件给子类7.2.2 方式二:传递函数给子组件7.3 props类型验证7.4 props的多层传递7.5 cla…

Python学习29天

二分查找 # 定义函数冒泡排序法从大到小排列 def bbble_sort(list):# i控制排序次数for i in range(len(list) - 1):# j控制每次排序比较次数for j in range(len(list) - 1 - i):if list[j] < list[j 1]:list[j], list[j 1] list[j 1], list[j] # 定义二分查找函数 def…

【工控】线扫相机小结 第三篇

海康软件更新 目前使用的是 MVS_STD_4.3.2_240705.exe &#xff0c;最新的已经到4.4了。 一个大的变动 在上一篇中我们提到一个问题&#xff1a; 需要注意的是&#xff0c;我们必须先设置 TriggerSelector 是 “FrameBurstStart” 还是 “LineStart” 再设置TriggerMode 是 …

K8S资源限制之LimitRange

LimitRange介绍 LimitRange也是一种资源&#xff0c;在名称空间内有效&#xff1b;限制同一个名称空间下pod容器的申请资源的最大值&#xff0c;最小值pod的resources中requests和limits必须在这个范围内&#xff0c;否则pod无法创建。当然pod也可以不使用resources进行创建ty…

Maven maven项目构建的生命周期 Maven安装配置 IDEA 配置 Maven

一&#xff0c;Maven的概述 Maven的作用&#xff1a;专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;提…

Rust “xxx“.to_string()和Rust String::from(“xxx“)区别(将字符串字面量(str类型)转换为String类型)

文章目录 Rust "xxx".to_string()和Rust String::from("xxx")区别1. .to_string()&#xff08;能够将任何可以显示的类型&#xff08;如数字、结构体等&#xff09;转为字符串&#xff09;2. String::from()区别总结&#xff1a;性能&#xff1a;示例对比&…

Windows仿macOS?看这一篇就够了

如果你有任何关于Windows仿macOS的问题&#xff0c;可加入942644281 &#xff08;QQ群&#xff09; Date9.20更新&#xff1a;增加功能按键左移部分Date9.16更新&#xff1a;增加了大多数资源的网盘链接Date9.15更新&#xff1a;增加StartAllBack&#xff0c;资源管理器调整部…

Django数据迁移出错,解决raise NodeNotFoundError问题

错误出现在&#xff1a; raise NodeNotFoundError(self.error_message, self.key, originself.origin) django.db.migrations.exceptions.NodeNotFoundError: Migration myApp.0003_alter_jobinfo_practise dependencies reference nonexistent parent node (myApp, 0002_renam…

PaddleNLP的环境配置:

PaddleNLP的环境配置&#xff1a; conda create -n paddle—test python3.9conda activate paddle—testpython -m pip install paddlepaddle-gpu2.6.1.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html(paddle—test) (venv) PS D:\work\论文写…

【MySQL实战45讲笔记】基础篇——redo log 和 binlog

系列文章 基础篇——MySQL 的基础架构 目录 系列文章1. 重要的日志模块&#xff1a;redo log 和 binlog1.1 redo log1.2 binlog1.3 执行器和 InnoDB 引擎内部如何执行更新语句 1. 重要的日志模块&#xff1a;redo log 和 binlog 前面系统的了解了一个查询语句的执行流程&…

MATLAB常见数学运算函数

MATLAB中含有许多有用的函数,可以随时调用。 a b s abs abs函数 a b s abs abs函数在MATLAB中可以求绝对值,也可以求复数的模长:c e i l ceil ceil函数 向正无穷四舍五入(如果有小数,就向正方向进一)f l o o r floor floor函数 向负无穷四舍五入(如果有小数,就向负方向…

MySQL无开通SQL全审计下的故障分析方法

几年前MySQL数据库出现突然的从库延迟故障和CPU爆高时&#xff0c;如何排查具体原因&#xff0c;可能说已在腾讯云的MySQL库里开启了SQL全审计&#xff0c;记录了全部执行的SQL&#xff0c;再通过下面的方法就可以很容易找到原因&#xff1a; 1&#xff0c;实用QPS和TPS高的高效…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

React(一)

文章目录 项目地址一、创建第一个react项目二、JSX语法2.1 生成列表2.2 大括号识别JS的表达式2.3 列表循环array2.4 条件判断以及假值显示2.5 复杂条件渲染2.6 事件监听和绑定2.7 使用Fregments返回多个根标签2.8 多条件渲染2.9 导出子组件 三、组件3.1 设置组件3.2 props给子组…

微服务安全Spring Security Oauth2实战_spring-security-oauth2-authorization-server

Spring Authorization Server 是什么 Spring Authorization Server 是一个框架&#xff0c;它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上&#xff0c;为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产品…

多线程-02-多线程的典型应用(异步调用和提高效率)

一、怎么理解异步和同步 从方法的角度去理解&#xff1a; 需要等待结果返回&#xff0c;才能继续运行就是同步不需要等待结果返回&#xff0c;就能继续运行就是异步 注意&#xff1a;同步在多线程中还有另外一层意思&#xff1a;是让多个线程步调一致。 同步调用 同步调用…

【数据分享】中国汽车工业年鉴(1986-2023)

本年鉴是由工业和信息化部指导&#xff0c;中国汽车技术研究中心有限公司与中国汽车工业协会联合主办。《年鉴》是全面、客观记载中国汽车工业发展与改革历程的重要文献&#xff0c;内容涵盖汽车产业政策、标准、企业、市场以及全国各省市汽车工业发展情况&#xff0c;并调查汇…

Matlab实现北方苍鹰优化算法优化随机森林算法模型 (NGO-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 北方苍鹰优化算法&#xff08;Northern Goshawk Optimization, NGO&#xff09;是一种新颖的群智能优化算法&#xff0c;灵感源自北方苍鹰捕食时的策略。该算法通过模拟苍鹰的搜寻、接近和捕捉猎物的行为模式&am…

CentOS使用中遇到的问题及解决方法

一、CentOS 7网络配置&#xff08;安装后无法联网问题&#xff09; 现象说明 在安装CentOS系统后&#xff0c;有可能出现无法联网的问题&#xff0c;虚拟机中的网络配置并没有问题&#xff0c;而系统却无法联网,也ping不通。 原因描述 CentOS默认开机不启动网络&#xff0c;因…

QT基础 UI编辑器 QT5.12.3环境 C++环境

一、UI编辑器 注意&#xff1a;创建工程时&#xff0c;要勾上界面按钮 UI设计师界面的模块 UI编辑器会在项目构建目录中自动生成一个ui_xxx.h&#xff08;构建一次才能生成代码&#xff09;&#xff0c;来表示ui编辑器界面的代码&#xff0c;属于自动生成的&#xff0c;一定不…