首页 > 其他分享 >ICMP流量—CTFGHUB技能树

ICMP流量—CTFGHUB技能树

时间:2024-01-14 20:56:28浏览次数:39  
标签:ICMP IP ping flag icmp 数据包 CTFGHUB 技能

简介

ICMP( Internet Control Message Protocol)互联网控制消息协议,和IP一层,但ICMP使用时必须增加IP报头。属于网络层协议,它用于TCP/IP 网络中发送控制消息,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。通过这些信息,网络管理者可以对所发生的问题作出诊断,然后采取适当的措施解决问题。攻击者也可以利用控制消息发送恶意数据包实现对主机的控制(ping是基于ICMP协议进行工作的)

报文格式

ping指令

ping (Packet Internet Groper),用于测试网络连接量的程序。Ping发送一个ICMP;回声请求消息给目的地并报告是否收到所希望的ICMP (ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令。ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络。

ping是基于ICMP协议的,就是互联网控制报文协议,网络包在异常复杂的网络环境进行传输的时候,常常会遇到各种各样的问题,当遇到问题的时候,总要传出消息来,报告情况,这样才可以调整传输策略。

ICMP报文是封装在IP包里面的,因为传输的时候,肯定需要源地址和目标地址,它本身非常简单。ICMP报文有很多种类型,最常用的类型是主动请求为8,主动应答为0。

实现过程

假设主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,当你在主机A上运行“ping 192.168.1.2”后,具体实现过程如下:

(1)ping命令执行的时候,源主机首先会构建一个ICMP请求数据包,ICMP数据包内包含多个字段。最重要的是两个,第一个是类型字段,对于请求数据包而言该字段为8;另一个是顺序号,主要用于区分连续ping的时候发出的多个数据包。每发出一个数据包,顺序号会自动加1,为了能够计算往返的时间,它会在报文的数据部分插入发送时间。

(2)由ICMP协议将这个数据包,连同地址192.168.1.2一起交给IP层,IP层将以192.168.1.2作为目的地址,本机IP作为源地址,加上一些其他的信息,构建一个IP数据包。

(3)接下来,需要加入MAC头,在本节ARP映射表中查找出IP地址192.168.1.2所对应的MAC地址,由数据链路层构建一个数据帧,还要加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

(4)主机B收到这个数据帧后,先检查它的目的MAC地址,并和本机的MAC地址对比,如符合,则接收,否则就丢弃,接收后检查该数据帧,将IP包从数据帧中取出来,交给本机的IP层,同样,IP层检查后,将有用的信息提取出来后交给ICMP协议。

(5)主机B会构建一个ICMP应答包,应答数据包的类型字段为0,顺序号为接收到的请求数据包中的顺序号,然后再发送给主机A

ICMP流量分析例题

ctfhub-icmp_data

题目:ping 也可以携带数据?

下载附件,得到一个流量包,根据题目,直接过滤icmp流量,直接搜索flag发现没有

查看流量发现

发现data里面藏有字符串,依次点击产看,将其提取出来即可得到flag

或者编写脚本进行提取

import pyshark
 
cap = pyshark.FileCapture('icmp_data.pcap',display_filter='icmp && icmp.type== 8')
#cap 打开名字为 data的,然后过滤掉 icmp 和icmp中type 为 8 的
flag = ''
for i in range(0,25):   #人工数出来flag有25长度 所以循环0到25
    flag+=chr(int((cap[i].icmp.data_data)[24:26],16)) 
    #打开cap中第i个,然后打开他icmp中data中data
    # 数字为十进制 所以转换为16进制,并且占俩空,数一下能发现为24到26
    # int(x,16) 是将x变为16进制,然后chr是把他进行ascii编码
print(flag)
cap.close()

运行得到flag  ctfhub{c87eb99796406ac0b}

icmp_length

题目:ping 包的大小有些奇怪

下载附件,得到一个流量包,还是县过滤icmp流量,搜索一下flag没有搜到

根据题目那就查看一下长度


发现每段长度都是不一样的,将长度全部都记录下来:99 116 102 104 117 98 123 97 99 98 54 53 57 102 48 50 51 125

将其转ascii码得到 ctfhub{acb659f023}
同样我们可以编写脚本进行提取

import pyshark
cap = pyshark.FileCapture('icmp_len.pcap',display_filter='icmp && icmp.type==8')
#过滤icmp流量
flag = ''
for i in range(0,18):
    flag+=chr(int(cap[i].icmp.data_len))
    #访问的是第i个cap中icmp数据包的data中的len
print(flag)

同样得到flag

标签:ICMP,IP,ping,flag,icmp,数据包,CTFGHUB,技能
From: https://www.cnblogs.com/N0tsure-blog/p/17964171

相关文章

  • 2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能
    2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能,每一个技能会有一个伤害,同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害,每一个技能最多只能释放一次,已知怪物有m点血量。现在想问你最少用几个技能能消灭掉他(血量小于等于0)。技能的数量是n,怪物的血......
  • 2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能
    2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能,每一个技能会有一个伤害,同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害,每一个技能最多只能释放一次,已知怪物有m点血量。现在想问你最少用几个技能能消灭掉他(血量小于等于0)。技能的数量是n,怪......
  • ICMP协议
    ICMP协议(网际控制报文协议)特征:1、ICMP报文被封装在IP报文的数据载荷部分;2、ICMP协议发送差错报告报文与询问报文;差错报告类型:-终点不可达-源点抑制-超时(数据包经过路由器时TTL的值会减1,当TTL的值减为0时,主机或者路由器会丢弃该报文,并且向源发送主机发送ICMP协议)-参数......
  • 2023年山东省职业院校技能大赛高职组信息安全管理与评估 理论题
    2023年山东省职业院校技能大赛高职组信息安全管理与评估理论题理论技能与职业素养(100分)2023年山东省职业院校技能大赛高职组信息安全管理与评估理论题【注意事项】Geek极安云科专注技能竞赛技术提升,基于各大赛项提供全面的系统性培训,拥有完整的培训体系。团队拥有曾获国奖......
  • 2023年山东省职业院校技能大赛高职组信息安全管理与评估 模块一
    2023年山东省职业院校技能大赛高职组信息安全管理与评估模块一模块一竞赛项目试题根据信息安全管理与评估技术文件要求,模块一为网络平台搭建与网络安全防护。本文件为信息安全管理与评估项目竞赛-模块一试题。所需的设备、机械、装置和材料:所有测试项目都可以由参赛选手根据......
  • 精进单元测试技能——Pytest断言的艺术
    本篇文章主要是阐述Pytest在断言方面的应用。让大家能够了解和掌握Pytest针对断言设计了多种功能以适应在不同测试场景上使用。了解断言的基础在Pytest中,断言是通过 assert 语句来实现的。简单的断言通常用于验证预期值和实际值是否相等,例如:deftest_addition():result=ad......
  • 第三届陕西省大学生网络安全技能大赛部分WriteUp
    Geek精神战队WriteUp(撰写完成后导出为pdf文件提交至平台)微信公众号:Geek_Team网络建设与运维-网络安全信息安全管理与评估这次的CTF题目还是有点难度的,也没有拿到特别好的成绩(最后半小时被冲烂了),此WP仅供学习参考,大佬勿喷。排名战队名称:第27名解题思路WEBEzRCE<?phperr......
  • 【译】如何提高我的 TypeScript 技能
    在这篇文章中,我将向您展示我如何在TypeScript中提高自己的技能。我会向您介绍5个令人满意的操作符,这将帮助您更好地理解TypeScript和如何使用它。以下是我将要介绍的操作符:非空断言操作符可选链操作符空合并操作符明确类型断言明确类型转换1.非空断言操作符非空断言操作符是......
  • Python编程技能的技巧和建议
    Python是一门强大且灵活的编程语言,但要成为一名精通的Python开发者,需要不断提升自己的编码技巧。本文将介绍15个能够帮助大家提高Python编程技能的技巧和建议,从而让你的键盘飞起,编写更高效和可维护的Python代码。使用列表推导式列表推导式是一种精简创建列表的方式,它可以在一行代......
  • 24届春招实习必备技能(一)之MyBatis Plus入门实践详解
    一、什么是MyBatisPlus?MyBatisPlus简称MP,是mybatis的增强工具,旨在增强,不做改变。MyBatisPlus内置了内置通用Mapper、通用Service,仅仅通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类使用需求。官网地址:https://mp.baomidou.com/主要特性无侵入:只做增......