要明白伪装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. VS Code调试.Net Core版Hello World

    安装C#插件 下载安装插件,地址:https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp 安装插件之后重新启动VS C ...

  2. MySQL 笔记整理(9) --普通索引和唯一索引,应该怎么选择?

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 9) --普通索引和唯一索引,应该怎么选择? 假如你在维护一个市民系统, ...

  3. mock测试

    看到群里有人说mock测试,究竟什么是mock测试呢?开始自己也没明白,查了下相关资料.还是很有必要了解哈:那么mock测试能解决什么问题?mock测试要如何做呢?今天为大家做简单介绍.mock测试就 ...

  4. mysql报错:java.sql.SQLException: Incorrect string value: '\xE4\xB8\x80\xE6\xAC\xA1...' for column 'excelName' at row 1

    一.问题 用Eclipse做项目时候报错 java.sql.SQLException: Incorrect string value: '\xE4\xB8\x80\xE6\xAC\xA1...' fo ...

  5. Node.js面试题之2017

    译者按: 从ECMAScript标准,Node.js语法以及NPM模块角度来看,Node.js的发展让人目不暇接,那么面试题也得与时俱进. 原文: Node.js Interview Question ...

  6. NET Core应用中使用缓存

    NET Core应用中使用缓存 .NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中.对于分布式缓 ...

  7. 这个月干啥去了?——H5+移动应用实战开发

    又到了公司一年当中最忙的时刻了,为了赶项目,现在居然开启了996模式,这是我从事.net开发以来从来没遇到过的. 一转眼,一个月又过了,回头一看,这个月一篇文章都没有发,上个月忙着一个人做项目,项目忙 ...

  8. 关于Xcode9.0版本模拟器Reset重置操作变更

  9. Android: 在native中访问assets全解析

    本文总结在Android Native C++开发中访问APK中的assets资源的方法 在CMake中添加相关NDK LIB的 依赖 因为我们接下来用到的一些函数实现在NDK库libandroid. ...

  10. DVWA 黑客攻防演练(五)文件上传漏洞 File Upload

    说起文件上传漏洞 ,可谓是印象深刻.有次公司的网站突然访问不到了,同事去服务器看了一下.所有 webroot 文件夹下的所有文件都被重命名成其他文件,比如 jsp 文件变成 jsp.s ,以致于路径映 ...