实训day2

任务一:DNS解析步骤

第一步:本地DNS服务器

客户端通过浏览器访问某网站,随后发起查询该域名的IP地址的DNS解析请求。该请求发送到了本地DNS服务器上。本地DNS服务器会首先检查浏览器缓存和host配置文件,,如果缓存中有该网站IP的记录,则直接返回对应的dns地址。如果没有,本地DNS服务器还要向DNS根服务器进行查询。

第二步:本地DNS服务器发送请求到根域名服务器

本地DNS服务器向根服务器发送DNS解析请求,请求网站域名对应的IP地址。

第三步:根域名服务器查询

根服务器经过查询,如果没有查询到该域名及IP地址的对应关系,就会告诉本地DNS服务器可以到顶级DNS服务器上继续查询,并返回顶级DNS服务器的地址。

第四步:本地DNS向顶级域名服务器发送请求

本地DNS服务器向顶级DNS服务器发送DNS请求,请求网站域名对应的IP地址。

第五步:顶级DNS服务器查询

顶级DNS服务器收到请求后,不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,返回NameServer服务器的地址,该域名可以在对应的域名服务器上进行解析获取IP地址。

第六步:本地DNS服务器向NameServer服务器发起请求

本地DNS服务器向该域名对应所属NameServer服务器发送DNS解析请求,请求域名对应的的IP地址。

第七步:NameServer服务器查询

NameServer服务器服务器收到请求后,在自己的缓存表中查找该域名和IP地址的对应关系,并将正确的DNS解析结果,也就是IP地址,返回给本地DNS服务器。

第八步:本地DNS服务器和客户端开始交互

本地DNS服务器将获取到与域名对应的IP地址返回给客户端,并且将域名和IP地址的对应关系保存在缓存中,以备下次别的用户查询时使用。

任务二:绕过CDN查找主机真实IP的方法

查询域名的历史解析记录,可能会找到网站使用CDN前的解析记录,从而获取真实ip,

相关查询网站有:
https://dnsdb.io/zh-cn/ ###DNS查询
https://x.threatbook.cn/ ###微步在线
http://toolbar.netcraft.com/site_report?url= ###在线域名信息查询
http://viewdns.info/ ###DNS、IP等查询
https://tools.ipip.net/cdn.php ###CDN查询IP

这里访问http://viewdns.info/为例:

二、请求工具的服务来查询和收集与目标域名相关的子域名信息

由于目标服务可能在主站上做好了相应的CDN,但是由于种种原因例如部署费用过高,或者对二级域名不上心等,所以导致二级域名没有部署到CDN,这时我们可以从这个方面入手进行查询。利用子域名搜集工具等搜集到足够的子域名后,便可以对通过子域名进行真实IP的搜集。

三、通过DNS查询的方式来查询www.cqupt.edu.cn的IP地址。

DNS查询返回了两个结果:一个是IPv6地址(2001:da8:c807:20:202:202:32:60),另一个是IPv4地址(202.202.32.60)。

任务三:子域名信息收集常用手段

一、搜索引擎查询

直接搜索:通过百度、谷歌等搜索引擎直接搜索目标组织的名称或相关关键词,有时可以直接找到子域名的信息。

二、官方备案网站查询

通过工信部ICP备案系统等官方备案网站,输入主域名查询备案信息,进而获取域名所属公司名称。然后,可以搜索该公司名称以获取其所有注册域名,包括子域名。

三、在线子域名查询网站

子域名查询网站:如SecurityTrailsIP138Chinazdnsscan.cn等,输入域名即可获取子域名列表。

四、官网架构图

目标企业的官网有时会列出子公司的介绍和官网链接,通过这些信息可以直接获取子域名。

五、Whois反查关联域名

Whois查询网站:如Whois.chinaz.com,通过同一公司的域名可能使用同一邮箱注册的信息进行反查。

六、爬虫技术

编写爬虫程序爬取目标网站的所有页面、robots.txt文件、crossdomain.xml文件、sitemap文件等,从中筛选出子域名信息。这种方法需要一定的编程技能和时间投入,但能够收集到较为全面的子域名信息。

七、DNS历史记录查询

通过查询DNS历史记录服务可以查找目标组织过去使用过的子域名信息。这种方法有时能发现已被删除但仍解析到目标组织的子域名。

任务四:Nmap全端口扫描(使用昨日搭建的pikachu靶场),加分项:能够说明SYN半开扫描的原理和跳过主机存活检测扫描使用常见。

一、Nmap全端口扫描

启动环境:

命令:

nmapip//扫描对应IP地址的主机

nmapip/24//扫描目标ip所在的c段

扫描自己的主机示例:

二、SYN半开扫描的原理:

TCPSYN半开扫描利用TCP/IP协议中的三次握手过程(SYN-SYNACK-ACK)的一个阶段来探测端口状态。在这个过程中,扫描器发送一个带有SYN标志的TCP数据包到目标主机的某个端口,这个数据包模拟了TCP连接建立过程的第一步。根据目标主机的响应,扫描器可以判断端口的状态:如果目标主机该端口是开放并且服务正在被监听,则返回一个同步确认数据包作为响应如果目标主机该端口处于关闭状态或没有服务被监听,则不会回应数据包;如果目标主机上的防火墙或路由器配置为阻止某些类型的流量,那么SYN数据包可能会被防火墙丢弃,扫描器无法收到任何响应。

任务五:dirmap目录探测工具实践

一、具体实现

在dirmap-master目录下打开cmd,输入命令python ./dirmap.py -i 127.0.0.1/pikaqiu/ -lcf

跳过主机存活检测扫描的使用场景主要包括以下几个方面:

1.已知目标主机在线

当已经通过其他方式(如物理连接、前期网络监控、DNS解析等)确认目标主机处于在线状态时,使用Nmap进行扫描时可以选择跳过主机存活检测。这样可以节省扫描时间,直接进行端口扫描、服务版本侦测、操作系统侦测等后续操作。

2.避免触发安全机制

在某些情况下,频繁的主机存活检测(如ICMPEcho请求)可能会触发目标主机的安全机制,如防火墙规则、入侵检测系统等。这些安全机制可能会记录扫描行为,甚至对扫描源进行反击。跳过主机存活检测可以减少对目标主机的潜在干扰,降低被发现的风险。

3.加速扫描过程

对于大规模的网络扫描任务,主机存活检测可能会成为影响扫描速度的关键因素。通过跳过主机存活检测,可以显著加快扫描速度,提高扫描效率。这对于需要快速评估目标网络状态或进行大规模资产发现的任务尤为重要。

4.渗透测试中的隐蔽性要求

在进行渗透测试时,保持隐蔽性是非常重要的。跳过主机存活检测可以减少对目标网络的直接交互,降低被目标系统或安全团队检测到的风险。这有助于渗透测试人员更加隐蔽地收集目标系统的信息,为后续的渗透测试工作打下基础。

二、每次扫描不一样的原因:

动态内容:网站的内容和服务可能随着时间动态变化,比如新页面或目录的添加、旧页面的删除或移动等。这些变化会直接影响Dirmap扫描时能够发现的条数。

负载与响应:网站在不同时间段的负载情况也会影响扫描结果。如果网站在扫描时负载较高,响应速度可能变慢,甚至某些页面或目录无法及时响应,导致扫描条数减少。

任务六:

一、在fscan目录下打开cmd,输入fscan-h127.0.0.1/24-np


二、输入“fscan-h192.168.111.1”扫描主机

任务七:安装插件

一、安装Wappalyzer

 二、安装FindSomething

  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值