介绍一下萌新自学的学习道路
首先,要明确学习的目标,一定要明确
先是要挑选一门适合自己的编程语言,比如Python/java,python的话比较简单,在爬虫方面表现也是非常不错的,Python的缺点也非常明显,列如代码运行较慢,岗位较少,再看视频的时候经常有说Python有多好,学会之后轻松月入10k+,但有不少部分都是被炒起来的。
再说Java,Java吸收了c的各种优点,而且Java还运行在jvm(Java虚拟机)里,这是就会有人问了,为什么Java要用jvm啊???
编程语言的学习可以买书,也可以通过一些网站来学习,列如:菜鸟 ,廖雪峰 之类的
某大佬:一般情况下,使用别的语言运行代码,编译成二进制文件后,就可以直接执行,因为操作系统能够识别它,但是Java程序不一样,使用Javac(Java的代码编译器)编译成.class文件之后,还需要使用Java命令去制动执行它,操作系统并不认识这些.class的文件格式,但是Java代码的复杂程度比Python高(就是Java好难
操作系统:这是真不能怪我。。。。
学习网络基础,可以和语言一起学
网络数据传输
(1)认识IP和MACIP:IP的格式:xxx.xxx.xxx.xxxIP由四个部分组成,每个部分都是0-255.\n网络号:前三个部分组成(用来标识网段),前三个部分相同,标识在一个网段\n主机号:最后一个部分用来标识主机号\nIP分为A-E五大类,部分范围是局域网IP,部分是广域网IP,可以根据规范,知道某个IP是局域网IP还是公网IP
注意: 局域网内(局域网IP):网段唯一,同一个网段,主机号唯一。
公网(公网IP):公网IP是唯一的,MAC:和网卡硬件绑定的,全球唯一
作用:网络数据传输定位网卡硬件的位置,一个主机可能有多个网卡(例如蓝牙连接,无线连接,有线连接的网卡),电脑硬件定位数据发送的目的位置只能使用MAC总结:IP地址描述的是路途总体的起点和终点。(给人用的,网络主机的逻辑地址)MAC地址描述的是路途上的每一个区间的起点和终点(给电脑硬件用的,网络主机的物理地址)
(2)网络数据传输的特性1.IP,MAC起的作用
2.封装分用——发送数据从高到低封装,接收数据从低到高分用
3.结合IP,MAC,理解网络数据传输,本质上是一跳一跳的传输数据,首先根据目的主机发送http请求,从源IP发送数据到目的IP\n从源MAC(1)发送数据到目的MAC(2),然后MAC(2)对数据进行封装和分用,再以MAC(2)为源MAC,目的MAC为MAC(3),以此,发送数据到最终目的MAC。
注意: 接收数据报的主机:可能在一些情况下(广播或者转发),出现目的MAC不是我,我也能收到的情况。五元组:源IP,目的IP,源端口,目的端口,协议号。IP:标识主机,给人用
源IP:发送数据的主机
目的IP:接收数据的主机,端口号:源端口:标识发送数据的进程目的端口,标识接收数据的进程 协议号:进程需要封装,解析数据报的数据格式
DNS协议:作用:域名转IP 主机/路由器:都存在DNS缓存 域名查询的方式:上图树形结构从下往上查找(缓存,域名服务器)。先在主机/路由器的DNS缓存中找,如果找不到,依次向上,特殊的IP,域名:本机IP为127.0.0.1,本机域名为localhost(3)网络数据传输流程 ARP/RARP 协议:主机中有ARP缓存表 ARP协议:IP转MAC RARP协议:MAC转IP注意:交换机和集线器自己是没有MAC地址的,都是通过转发(不会修改源MAC和目的MAC)\n交换机有MAC地址转换表,可以根据MAC找到对应的端口,而集线器没有这个功能1)网络互联的方式 首先介绍集线器:网络数据传输时,直接转发到其他所有端口(工作在物理层)
网络数据传输的过程:1.ARP缓存表找到了 1.主机1发送数据到主机3(http://主机3:80)2.主机1查找本机的ARP缓存表,根据ARP协议,找到目的MAC 3.数据报由主机1,发送到集线器(数据报中的源MAC(主机1),目的MAC(主机3)真实的数据报\n4.集线器转发数据报到除主机1的其他所有相连的主机(主机2,主机3) 5.主机2接收:数据报中,目的MAC不是我,丢弃\n主机3接收,数据报中,目的MAC是我,接收\n目的IP是我,交给对应端口处理,如果不是我,执行上述网络传输(一跳一跳的过程) 2.ARP缓存表没找到 1.主机1发送数据到主机3,http://主机3:80 2.主机1查找本机的ARP缓存表,发现找不到 3.主机1发送广播数据报(非真实数据,只是要求对应主机返回MAC:我要IP为主机3的MAC,谁是主机3,快告诉我)注意:4.集线器转发到主机2,主机3 5.主机2接收:要求的IP不是我,丢弃 主机3接收:要求的IP是我,返回我的MAC 6.主机1收到主机3的返回数据(IP,MAC)更新自己的ARP缓存表 7.主机1发送真实的数据到主机3
抓包:什么是抓包?
抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
抓包做什么?不管做什么事情,首先要有明确的目的,其次是要清楚能力的范畴,最后是要有清晰的思路。原始数据->过滤->分析,这是数据处理的基本套路,抓包的目的就是为了获取到想要的原始数据,拿到数据以后,我们就可以做以下一些事情:
分析数据传输协议。定位网络协议的问题。从数据包中获取想要的信息。将截取到的数据包进行修改,伪造,重发。
为什么抓包?1.从功能测试角度,通过抓包查看隐藏字段 Web 表单中会有很多隐藏的字段,这些隐藏字段一般都有一些特殊的用途,比如收集用户的数据,预防 CRSF 攻击,防网络爬虫,以及一些其他用途。这些隐藏字段在界面上都看不到,如果想检测这些字段,就必须要使用抓包工具。通过抓包工具了解协议内容,方便开展接口和性能测试 性能测试方面,性能测试其实就是大量模拟用户的请求,所以我们必须要知道请求中的协议内容和特点,才能更好的模拟用户请求,分析协议就需要用到抓包工具;接口测试方面,在接口测试时,虽然我们尽量要求有完善的接口文档。但很多时候接口文档不可能覆盖所有的情况,或者因为文档滞后,在接口测试过程中,还时需要借助抓包工具来辅助我们进行接口测试。
需要通过抓包工具,检查数据加密 安全测试方面,我们需要检查敏感数据在传输过程中是否加密,也需要借助抓包工具才能检查。处理前后端 bug 归属之争 在我们提交bug的时候,经常会出现前端(客户端展示)和后端(服务端的逻辑)的争议,那么可以通过抓包工具,确实是数据传递问题还是前端显示的问题。如果抓出来的数据就有问题的话,那么一般是后端的问题;如果抓出来的数据是正确的,那么基本上可以断定是前端显示的问题。通过抓包分析,可以更好的理解整个系统 经常使用抓包工具辅助测试,可以很好的了解整个系统,比如数据传输过程前后端的关系,以及整个系统的结构。特别是对现在的微服务架构的产品,抓包能够更好的梳理和掌握整个系统各个服务之间的关系,大大增加测试的覆盖度。另外还可以增进对代码、HTTP协议方面知识的理解。
推荐书籍:《白帽子讲web安全》《黑客攻防技术宝典(web实战篇)》《黑客攻防实战,从入门到精通》《web安全攻防 渗透测试实战指南》《kali Linux 高级渗透测试》
《白帽子讲web安全》:该书是作者的是实际工作经验,也是web安全核心知识点的集合,可操行比较强,实际参考性比较强。有的章节末尾,还附上了作者以前写的博客文章,可以用于延伸阅读。
《黑客攻防技术宝典》:许多外国业内人士对这本书的评价很高,它是Web安全领域专家的经验结晶,条理很清晰,内容特别丰富,很高深很有阅读价值。相对地阅读门槛业比较高,再加上是外国的书,翻译过来可能有些许差错,阅读难度也比较大。
《黑客攻防实战》:这本书围绕攻、防两个角度,采用图例、图释、标注等方式,教你如何防范服务器被侵入、局域网被攻击、银行账号被破解、敏感资料被窃取等实战,重操作技巧。图文结合的方式,阅读起来比较轻松,新手也可以通读,可以提高实战技能。
《web安全攻防》:该书实战性很强,前期踩点、后期提权、内网渗透讲得比较细致;其次进阶性比较好,各种技术细微知识点,都概括的很好,很适合入门道进阶学习;后面还介绍了一些渗透技术、经验和工具等,参考性很强。
《kali Linux 高级渗透测试》:从攻击者的角度来审视网络框架,包含了大量实例、源码、渗透测试工具、方法和实践,第2版还在第1版的基础上,增加了一些内容,更全面,技术参考性更强。
网络安全很枯燥,记得多找一些志同道合的朋友一同学 |