实习实训day1

目录

一. 内外网互联技术

​​​​​​二. 环境安装

1. JAVA

2. Python

三. pikachu

1.环境搭建

2. 暴力破解:基于表单的暴力破解

2.1 proxy模式

2.2 Intruder模式

(1)狙击手

(2)交叉

(3)集束炸弹

2.3 Repeater模式


一. 内外网互联技术

1. 端口映射(NAT技术):

端口映射(NAT,网络地址转换)技术允许将内网机器的端口映射到外网IP地址的某个端口上,这样外网用户就可以通过访问这个外网IP地址和端口来访问内网中的特定服务。NAT技术包括静态NAT、动态NAT和端口NAT(PAT)等类型。

2. VPN(虚拟专用网络):

VPN通过加密技术在公共网络上建立一个虚拟的私有网络,使内网用户能够安全地访问外网资源,就像在同一个局域网内一样。VPN协议包括PPTP、L2TP、OpenVPN等。

3. 代理服务器:

在内网中搭建代理服务器,将内网用户的请求转发到外网,并从外网获取响应后返回给内网用户。这样,内网用户就可以通过代理服务器间接访问外网资源。常用的代理服务器软件有Squid、Nginx、Apache等。

4. 远程桌面协议(RDP)或远程Shell

  • 远程桌面协议(RDP):主要用于Windows系统,允许用户远程访问和控制另一台计算机。通过配置RDP服务,外部用户可以通过互联网安全地访问内网中的服务器或计算机。
  • 远程Shell(如SSH):在Linux和Unix系统中常用,SSH(Secure Shell))提供了一种加密的网络协议,用于远程登录和命令执行。通过SSH,用户可以安全地访问内网服务器,执行命令或传输文件。

5. 反向代理服务器

反向代理服务器位于内网和外网之间,负责将外部的请求转发到内网服务器上处理。这种方式不仅可以实现内外网的互联,还可以提高内网服务器的安全性和访问效率。

6. DirectAccess(直接访问)

DirectAccess是Windows Server提供的一种远程访问技术,允许远程用户直接连接到企业内网,无需使用VPN客户端或连接到特定的网络位置。DirectAccess使用IPv6和过渡技术(如Teredo或6to4)来穿越NAT和防火墙,提供无缝的远程访问体验。

7. 软件定义网络(SDN)

SDN是一种新兴的网络架构,它将网络控制平面与数据转发平面分离,实现了网络资源的集中管理和灵活配置。通过SDN,企业可以更容易地实现内外网的互联,并根据业务需求动态调整网络策略。

8. API网关

API网关是微服务架构中常用的组件,它位于客户端和服务器之间,负责处理所有的API请求。通过API网关,企业可以实现内外网服务的统一管理和访问控制,同时提供负载均衡、安全认证等功能。

​​​​​​二. 环境安装

1. JAVA

主要用的是java8,但遇到了需要高版本的情况,因此又装了个java17,切换版本时编辑环境变量即可。

java8安装情况:

java17安装情况:

系统环境变量配置情况:

两个版本我都安装在D:\env\Java\路径下,需要切换版本时更改JAVA_HOME为对应的变量即可。

此外,还要配置PATH变量:

这里遇到一个小坑:由于之前安装老版本java时配置过一次PATH,现在卸载了老版本后,新装java8时,自动在最上面添加了C:\Program Files (x86)\Common Files\Oracle\Java\java8path,导致手动配置的%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin无效了,版本一直都是java8。所以要把这两条移到上面去,或者直接删掉自动添加的那条。同理,安装java17时也要再修改一下PATH变量。

Tips:

Windows 系统在查找可执行文件时,会按照 PATH 变量中目录的顺序进行搜索,并使用它找到的第一个匹配项。

2. Python

安装情况:

三. pikachu

1.环境搭建

使用phpstudy2018搭建环境。为了避免可能的端口冲突,web服务器端口我配置成了8081:

把pikachu放到WWW目录里,修改pikachu\inc目录下的config.inc.php,根据自己的mysql环境修改用户名密码等(我这里用户名是root,密码是123456):

然后访问install.php进行安装:

之后就可以用浏览器正常访问网站了:

2. 暴力破解:基于表单的暴力破解

要求:使用proxy、Intruder、Repater三种模式复现,Proxy模块需要直接修改请求包,并拦截返回包进行截图,Intruder需要使用狙击手、交叉和集束炸弹三种形式复现。

2.1 proxy模式

先admin+12345登录并用BP抓包:

在proxy模块直接修改密码为54321,然后拦截返回包:

一直放包直到拦截到对应的响应包,可以直接修改,放行后的响应就会返回到浏览器:

2.2 Intruder模式

抓包并送到Intruder:

(1)狙击手

在password处设置payload:设置一个简单的payload集:

攻击完成以后,排序包长度,发现登陆成功,成功爆破出admin的密码123456:

(2)交叉

在username和password处都设置payload:

payload集1中添加6个用户名:

payload集2中添加6个密码:

该攻击模式会同时遍历组合两个payload集,因此一共请求6次。爆破并排序包长度,得到admin的密码为123456:

(3)集束炸弹

同样在username和password处都设置payload:

使用和交叉攻击模式同样的payload集。该攻击模式会依次遍历两个payload集并做组合,因此一共请求36次:

爆破并排序包长度,得到admin的密码为123456:

2.3 Repeater模式

抓包并送到Repater:

Repeater模式中,可以任意修改并多次投放请求包:

将请求包中admin的密码改为123456后发送,响应包显示成功登录:

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C语言万年历的实训报告,供您参考: 一、实训目的 本次实训的主要目的是通过编写一个简单的C语言万年历程序,巩固C语言基本语法和编程思想,提高编程能力和解决问题的能力。 二、实训要求 1、能够使用C语言基本语法和控制语句编写程序。 2、能够使用数组来存储和操作数据。 3、能够使用函数来实现模块化编程。 4、能够使用指针来操作内存中的数据。 5、能够使用文件来读取和写入数据。 三、实训内容 1、程序功能 本程序实现了一个简单的万年历功能,可以通过输入年份和月份来显示该月的日历。 2、程序实现 以下是本程序的主要代码实现: ```c #include <stdio.h> // 判断是否为闰年 int is_leap_year(int year) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { return 1; } else { return 0; } } // 获取某个月份的总天数 int get_days(int year, int month) { int days[] = {31, 28 + is_leap_year(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; return days[month - 1]; } // 获取某个日期是星期几 int get_weekday(int year, int month, int day) { if (month == 1 || month == 2) { year--; month += 12; } int c = year / 100; int y = year % 100; int w = y + y / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1; w = (w % 7 + 7) % 7; return w; } // 显示日历 void show_calendar(int year, int month) { int days = get_days(year, month); int weekday = get_weekday(year, month, 1); printf(" 日 一 二 三 四 五 六\n"); int i; for (i = 0; i < weekday; i++) { printf(" "); } for (i = 1; i <= days; i++) { printf("%2d ", i); if ((weekday + i) % 7 == 0) { printf("\n"); } } if ((weekday + days) % 7 != 0) { printf("\n"); } } int main() { int year, month; printf("请输入年份:"); scanf("%d", &year); printf("请输入月份:"); scanf("%d", &month); if (month < 1 || month > 12) { printf("月份输入错误!\n"); return 1; } printf(" %d年%d月\n", year, month); show_calendar(year, month); return 0; } ``` 四、实训总结 通过本次实训,我学会了如何使用C语言来编写一个简单的万年历程序,巩固了C语言基本语法和编程思想,加强了对函数、数组、指针、文件等概念和用法的理解,提高了编程能力和解决问题的能力。同时,我也意识到在编程过程中需要注重代码的规范、可读性和可维护性,这对于日后的开发工作非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值