本地web搭建和ip伪造

当我们访问一个网页时,整个过程可以概括为几下几个部分:

1.域名解析成IP地址;

2.与目的主机进行TCP连接(三次握手);

3.发送与收取数据(浏览器与目的主机开始HTTP访问过程);

4.与目的主机断开TCP连接(四次挥手);

其中如果服务器要获取我们的ip,可以通过第二步tcp连接时三次握手获取IP,也可以通过第三步我们向服务器发送数据包里面的ip

在第三步中,我们向服务器发送的请求数据时,其中有两个字段是我们的ip信息:

1.x-forwarded-for(XFF头),代表客户端的ip,可以有多个,中间以逗号隔开

2.client-ip,同样代表客户端的ip,但不属于标准请求头信息(有些服务器可能识别不出来)

客户端获取服务端ip有三种方法

1.$_SERVER[“REMOTE_ADDR”],获取的是客户端与服务器三次握手建立TCP连接时的ip,这个是无法伪造的

2.$_SERVER[“HTTP_CLIENT_IP”],获取的是http请求的”CLIENT_IP”字段的信息

3.$_SERVER[“HTTP_X_FORWARDED_FOR”],获取的是http请求头的”x-forwarded-for”字段的信息

其中后面两种都是通过http请求报文发给服务器的,也就是我们能够伪造的

拿自己电脑试验一下:

可以在php中写如下代码
1.png

浏览一下该网页
2.png

获得了$_SERVER[“REMOTE_ADDR”]字段(该字段连接网页时会自动生成)的ip,另外两个ip为空是因为我们发送的请求报文里面没有这两个字段。

利用burpsuite抓包添加另外两个字段
3.png

既然第一种ip是无法伪造的,那么ip伪造又从何说起?服务器只要获取tcp三次握手时的ip不就行了?
4.png

这里就要分情况了,如果服务器和客户端在同一个局域网内,也就是在同一个网段内,服务器直接获取你的REMOTE_ADDR字段,那是无法伪造的

但是这种情况在整个互联网内只占少数,在真实环境里,在服务器前面一般是有防火墙的,而且客户端也可以设置代理,这时与服务器三次握手的往往并不是客户端,而是一些中间设备或代理商,这时如果服务器直接获取REMOTE_ADDR字段也只是那些中间设备的ip

如果服务器获取的是$_SERVER[“HTTP_CLIENT_IP”]和$_SERVER[HTTP_X_FORWARDED_FOR]字段,这些消息来自客户端的请求头,不受中间设备的干扰,因而更加准确,但是也是我们可以人为修改的内容。

当然了,不要觉得觉得自己伪造了ip就开始挑衅警察叔叔了,在网络上干些不为人知的勾当。

警察叔叔的力量可不是大佬能够挑衅的。
5.png

接下来看一道CTF里面比较简单的题目:
6.png

打开题目发现要我们从本地登录。查看源码也并没有发现什么,于是用burpsuite抓包看一下
7.png

抓包结果如下,结合提示请从本地登录与抓包到的X_Forwarded_For字段,很容易就猜到只要将ip改为127.0.0.1即可
8.png






下面简单讲解一下在本地配置web网站:

开发环境:
9.png

大家自行下载一下

1.首先安装vc
10.png

2.解压subline
11.png

3.安装Wampserver
12.png

4.打开Wampserver
14.png

正常打开后会变绿色并且能够访问localhost
15.png

5.cmd里输入命令
16.png

查看端口开放情况
17.png

可看到3306端口开放

简单设置域名:

找到电脑目录 C:\Windows\System32\drivers\etc 下的hosts
18.png

打开后修改
19.png

在这里可以更改域名

这样打开www.ljc.com即是打开127.0.0.1
20.png

6.搭建apache 虚拟机(可以创建多个网站)

首先打开 http.comf 文件

路径如下:wamp\bin\apache\apache2.4.9\conf
21.png

在文件结尾粘贴上如下内容:

NameVirtualHost *:80
<VirtualHost *:80>
#域名的配置,每个虚拟主机都有个一域名对应
ServerName localhost
#设定网站的目录
DocumentRoot "C:/wamp/www"
#给目录指定访问权限
<Directory "C:/wamp/www/">
    Order Deny,Allow
    Allow from all
</Directory>
#给默认的首页
Options Indexes FollowSymLinks
</VirtualHost>
<VirtualHost *:80>
ServerName www.f.com
    DocumentRoot "C:/wamp/www/www.f.com"
    <Directory "C:/wamp/www/www.f.com">
    Order Deny,Allow
    Allow from all
    </Directory>
#给默认的首页
Options Indexes FollowSymLinks
</VirtualHost>

<VirtualHost *:80>
ServerName www.k.com
    DocumentRoot "C:/wamp/www/www.k.com"
    <Directory "C:/wamp/www/www.k.com">
    Order Deny,Allow
    Allow from all
    </Directory>
#给默认的首页
Options Indexes FollowSymLinks
</VirtualHost>

结果如图:
22.png

首先修改
23.png

并且内容是该文件的路径(这里新建了两个文件充当两个新网站)
24.png

另外两个同样如此,找到文件的路径

结果如此:
25.png

配置完以后重启下服务
26.png

7.分别在两个文件夹里创建文本并写上内容(这两个文件夹就是存放网站的内容了)
27.png

打开网站:
28.png

这样本地就有三个网站了(分别是localhost,www.ljc.com,www.zxy.com)

相关推荐

发表评论

路人甲

网友评论(0)