网站地图    收藏   

主页 > 后端 > 网站安全 >

web安全从零开始 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 10:16 作者: 阅读:

[导读] 先给个网址吧!https: www pentesterlab com bootcamp bootcamp新兵训练营的意思。不废话,直接第一周。一、HTTP协议,中文翻译超文本传输协议。http: zh wikipedia org wiki %E8 3%E5%8D%8F%E8%AE%AE注意...

先给个网址吧!

https://www.pentesterlab.com/bootcamp/
bootcamp新兵训练营的意思。
不废话,直接第一周。

一、HTTP协议,中文翻译超文本传输协议。
http://zh.wikipedia.org/wiki/%E8 … 3%E5%8D%8F%E8%AE%AE
注意要点:
(1)它是一种网络协议。
(2)HTTP/1.1协议定义了八种方法来以不同方式操作指定的资源。
(3)http请求信息的格式。(请求行和标题必须以<CR><LF>作为结尾。空行内必须只有<CR><LF>而无其他空格)
学习方法:我们不需要知道http协议的具体内容,我们只需要知道怎么使用他就行了(也就是怎么通过不同的方法来操作指定资源的)。
学习工具:各种可以拦截http请求的工具。(burpsuite , webscarab等等。。)
学习例子:
(1)iis安全配置
先看漏洞原因:  http://www.2cto.com/Article/201307/228165.html

用nc测试向含漏洞的服务发送不同的http请求,来达到写入webshell的目的。
附一个测试链接:   http://www.2cto.com/Article/201310/249284.html
(2)CRLF注入
此漏洞php版本只存在在历史中,现在新版本的服务器都有过滤。所以无法漏洞复现,但可以通过webgoat(jsp的)来测试。
附一个测试链接  http://www.2cto.com/Article/201310/249285.html

主要是学习http协议怎么应用,而不是它的实质是什么。
二、DNS系统
http://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F
注意要点:一定要把内容通读一遍。知道什么是A记录,CNAME记录等等。。
学习例子:DNS域传送漏洞
先看漏洞原因:  http://www.2cto.com/Article/201310/249287.html
利用工具:dnsenum
举例:dnsenum moliyo.com(刚刚乌云随意搜的例子)
三、WHOIS,用来查询互联网域名的ip和所有者的协议。
http://zh.wikipedia.org/wiki/WHOIS
学习例子:利用工具查询域名的所有者信息。
四、Network socket
http://en.wikipedia.org/wiki/Internet_socket
1、每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
2、进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的
3、对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别
4、根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认
5、服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
6、客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
7、客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。
socket()   为通讯创建一个端点,为套接字返回一个文件描述符。
函数原型:int socket(int domain, int type, int protocol);
bind()为一个套接字分配地址
函数原型:int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);
listen()当socket和一个地址绑定之后,listen()函数会开始监听可能的连接请求
函数原型:int listen(int sockfd, int backlog);
accept():当应用程序监听来自其他主机的面对数据流的连接时,通过事件(比如Unix select()系统调用)通知它。必须用 accept()函数初始化连接。 Accept() 为每个连接创立新的套接字并从监听队列中移除这个连接
函数原型:int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);
connect():connect()系统调用为一个套接字设置连接,参数有文件描述符和主机地址。
函数原型:int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
学习示例:
C语言的socket举例
http://zh.wikipedia.org/wiki/Socket
python语言的socket举例
。。。不贴代码了,自己看学。

另外,就要安装linux开始学习linux,学习一门语言。ruby或python,两者随意。

Ps:写完了,感觉我像个sb,写的什么玩意阿,自己菜的一逼,还在这意淫。噢擦,睡觉。

补充内容 (2013-9-30 09:56):
关于socket,还可以通过学习php socket反弹shell来学习 参考文章 http://www.2cto.com/News/201301/182042.html

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论