要明白伪装IP的原理,首先要回顾一下TCP的三次握手。
总所周知在链接初始化的阶段,
需要一次三次握手来建立链接,
之后客户端和服务端会依据初始的这个IP地址来通信。

从这个角度上来说,
想真正的伪装一个IP地址是不可能的。

因为即使从链路层把IP地址改了,
后续发出去的请求也回不来,
除非你只是想用来作为DDOS攻击,要不没什么意义。

所以要另辟蹊径。

代理转发规则
用过代理吧?
不管是VPN,还是局域网代理,
都是通过代理服务器转发客户端的消息到服务端。

这里就引出主角,一个在 Header里的字段
X-Forwarded-For,
很多地方简称 XFF。

XFF不是一个标准的HTTP协议,
但是它被广泛接受用作于标识代理转发的规则。

通常一个 XFF字段会像下面这样,
javascript
X-Forwarded-For: 127.0.0.1, IP2, ..., IP N

从左到右,
依次记录的是距离服务器距离远的代理服务器的IP。

通过这个字段,
服务端就能知道这个请求是通过哪些代理转发过来的了。

而有些服务端的bug在于,
他们不再关心这个请求的原始地址,而只关心最后那个转发给他的 IP N的代理。

正常来说,
应该把三次握手的 IP 作为 Remote IP记录,
以这个为客户端的唯一 IP,这样才是准确的。

实现
说了那么多理论,
下面来看看如何使用这个 XFF字段。
首先我们用 postman 模拟一个 HTTP 请求,看看返回的字段里携带的客户端信息是怎样的。

这里随意找了个服务器发了个模拟请求,
下面的 device字段不仅包含了 IP 地址,也包括了经纬度。

然后我们再人为的添加上 XFF 字段,
看看 device信息变成了什么。

看到了吗,
现在已经变成了一个假的位置。

伪造IP的技术实现方案
假设说你想伪造的是自己的app,
那么就简单的多了,只要在每个 http 请求的header里加上 XFF字段就可以。

如果是第三方app,
或者是你不想用侵入式的方法去修改 header的话,
可以考虑用 Xposed 框架来做这件事情。
---------------------
原文:https://blog.csdn.net/weixin_42063726/article/details/80402207

如何伪造IP(转)的更多相关文章

  1. PHP用curl伪造IP和来源

    以前没有这么搞过. 今天群里一个朋友在问这个问题. 查了下,CURL确实很强悍的可以伪造IP和来源. 1.php 请求 2.php . 1.php代码: $ch = curl_init(); curl ...

  2. 【转】php curl 伪造IP来源的实例代码

    curl发出请求的文件fake_ip.php: 代码 复制代码 代码如下: <?php $ch = curl_init(); $url = "http://localhost/targ ...

  3. php curl 伪造IP来源的代码分享

    php curl 可以模仿用户登录,还可以模仿用户IP地址.伪造IP来源. 1,curl发出请求的文件fake_ip.php: <?php $ch = curl_init(); $url = & ...

  4. PHP用CURL或fsockopen伪造IP和来路(referer)

    URL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 CURL库. 我们可以用CURL来伪造IP和来路,例子:1.php 请求 ...

  5. 实验吧 貌似有点难 伪造ip

    解题链接: http://ctf5.shiyanbar.com/phpaudit/ 解答: 点击View the source code —>代码显示IP为1.1.1.1即可得到KEY—> ...

  6. php curl 伪造IP来源的实例代码

    来源:http://www.jb51.net/article/31694.htm curl 它不但可以模仿用户登录,还可以模仿用户IP地址哦,为伪造IP来源,本实例仅供参考哦 //伪造ip ; $i ...

  7. PHP获取IP地址的方法,防止伪造IP地址注入攻击

    PHP获取IP地址的方法 /** * 获取客户端IP地址 * <br />来源:ThinkPHP * <br />"X-FORWARDED-FOR" 是代理 ...

  8. C# 用HttpWebRequest模拟一个虚假的IP伪造ip

    有人会说:IP验证是在TCP层完成的,不是HTTP层完成的,如果伪造IP的话可能连TCP的三次握手都完不成.我这里说的不是完全意义的伪造.如果你使用透明代理上网,那么在透明代理发送给服务器端的HTTP ...

  9. [浪风推荐]CURL伪造IP和来源

    给“刷票”的朋友提供了很好的换IP的方案,查了下,CURL确实很强悍的可以伪造IP和来源. 1.php 请求 2.php . 1.php代码: $ch = curl_init(); curl_seto ...

随机推荐

  1. Error - The debugger's worker process (msvsmon.exe) unexpectedly exited.

    Error - The debugger's worker process (msvsmon.exe) unexpectedly exited. 解决方法:Tools->Options-> ...

  2. DataTable转换成List集合,传递到HTML页面

    public string GetPwd(string str) { var dt= bll.Gets(str); List<string> list = new List<stri ...

  3. C# Word文档中插入、提取图片,文字替换图片

    Download Files:ImageOperationsInWord.zip 简介 在这篇文章中我们可以学到在C#程序中使用一个Word文档对图像的各种操作.图像会比阅读文字更有吸引力,而且图像是 ...

  4. Ext.extend

    Ext.extend:老版本的定义类,单继承 有两种使用方法,具体见附件中的Extend1.html和Extend2.html 附件如下: Ext.extend.zip

  5. hbuilder vs2013api Access-Control-Allow-Origin

    <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" valu ...

  6. openlayers3 实现点选的几种方式

    WebGIS开发中,点击查询是最常用的一种查询方式,在ArcGIS api 中,这种查询叫IdentifyTask,主要作用是前台提交参数,交ArcServer查询分析返回.本文从开源框架的角度,从前 ...

  7. AEAI HR开源人力资源管理v1.6.0发版公告

    1 升级说明 AEAI HR v1.6.0版是AEAI HR v1.5.2版人力资源管理系统的升级版本,本次升级的系统是基于AEAI DP 3.8.0_20170228进行打包部署的,升级内容主要是针 ...

  8. Linux chmod命令用法

    chmod----改变一个或多个文件的存取模式(mode) Linux/Unix 的文件调用权限分为三级 : 文件拥有者.群组.其他.利用 chmod 可以藉以控制文件如何被他人所调用. 使用权限 : ...

  9. QT解析和组装json

    json这个小朋友熟悉又陌生,今天给同学们好好讲讲QT是如何使用json的,一句话:简单 1.什么是json? A:json就是个<key,value>字符串 ①一个json对象 {&qu ...

  10. Kubernetes 集群日志管理 - 每天5分钟玩转 Docker 容器技术(180)

    Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合.Elasticsearch ...