普及网络安全知识,推动信息技术发展。
为祖国的网络安全撑起一片蓝天,为网络安全爱好者构建一方家园。
欢迎来到灰帽程序员论坛,我们的网址是:
论坛以技术交流为主,非商业性质论坛。
大家好,我是小雨,QQ:798033502
今天给大家带来的教程是《Web-Attak系列教程第二季0x02讲——三次握手》
这些视频教程最终会整理成书《Web安全编程与渗透分析》
在进行渗透的第一步是信息收集和漏洞扫描,那么在讲这个之前呢,我们有必要介绍下TCP报文结构。因为我们不是要当script kiddie
We want to be a hacker。所以,我们必须要懂得原理
源端口(16位) |
目的端口(16位) |
||
序列号(32位) |
|||
确认号(32位) |
|||
偏移位 |
保留位 |
控制位 |
窗口大小(16位) |
校验和(16位) |
紧急数据指针(16位) |
||
可选项(32位) |
|||
CP数据 |
//定义TCP报头
typedef struct _tcphdr
{
byte source_port[2]; //发送端端口号,16位
byte dest_port[2]; //接收端端口号,16位
byte sequence_no[4]; //32位,标示消息端的数据位于全体数据块的某一字节的数字
byte ack_no[4]; //32位,确认号,标示接收端对于发送端接收到数据块数值
byte offset_reser_con[2];//数据偏移4位,预留6位,控制位6为
byte window[2]; //窗口16位
byte checksum[2]; //校验码,16位
byte urgen_pointer[2]; //16位,紧急数据指针
byte options[3]; //选祥和填充,32位
}TCP_HEADER;
那么下面我们再来说下三次握手,看看就算计是怎样建立连接并开始通讯的。因为我们的扫描技术与之密切相关。
====================================================
例如:
第一步:PC-A请求与PC-B建立连接,PC-A发送一个SYN请求建立同步连接。消息的内容就像是说:"你好,我想和你机子端口X上的服务建立连接,先同步一下,用序列号Y来开始连接。"
第二步:PC-B主机响应发送过来的序列号,发送ACK确认同步,并将自己的序列号告诉PC-A。
(此时PC-A认为已经建立连接,PC-B却不这样认为,它要等自己的序列号有了应答才能确认建立连接。因此现在的状态称为“半连接”。如果PC-A不对收到的序列号做出应答,这个连接就永远不会建立起来。系统也不会对连接做任何记录,这就是SYN半连接扫描的原理,这样可以达到隐藏渗透测试者真实IP的目的)
第三步:PC-A对PC-B发来的序列号做出应答,两台计算机开始建立连接。
视频地址:
http://www.56.com/u80/v_ODY1MjI3MjU.html
http://v.youku.com/v_show/id_XNTEzNzkxNjg4.html