导航:首页 > 编程语言 > phpremoteaddr伪造

phpremoteaddr伪造

发布时间:2023-07-09 16:01:33

❶ 如何改变或伪造HTTP

有类似功能的软件,如HTTP-REFERER
其实伪造HTTP-REFERER是一些流氓软件或者是一些批量注册或灌注信息的工具必备的,因为这样才能跳过服务器的
HTTP-REFERER检查。

先看看伪造的方法,看看服务器端的手
段,服务器可以轻松实现,但是一个直接的问题就是查 remote_addr的时候,就只有一个了,容易被禁止IP:

ASP:

dim http
set
http=server.createobject("MSXML2.XMLHTTP") '//MSXML2.serverXMLHTTP也可以
Http.open
"GET",url,false
Http.setRequestHeader
"Referer","http://www.fromdomain.cn/"
Http.send()

php(前
提是装了curl):

$ch = curl_init();
curl_setopt
($ch, CURLOPT_URL, "http://www.readdomain.cn/xxx.asp");
curl_setopt
($ch, CURLOPT_REFERER, "http://www.fromdomain.cn/");
curl_exec ($ch);
curl_close
($ch);

PHP(不装curl用sock)

$server = 'www.readdomain.cn';
$host =
'www.fromdomain.cn';
$target = '/xxx.php';
$referer =
'http://www.aslibra.com/'; // Referer
$port = 80;
$fp =
fsockopen($server, $port, $errno, $errstr, 30);
if (!$fp)
{
echo
"$errstr ($errno)<br />\n";
}
else
{
$out = "GET
$target HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Cookie:
SESSIONID=test\r\n";
$out .= "Referer: $referer\r\n";
$out .=
"Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}

VB.NET/C#.NET

Dim oXMLHttp As MSXML2.XMLHTTP30 = New MSXML2.XMLHTTP30()


MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();
oXMLHttp.open(....
oXMLHttp.setRequestHeader(...
oXMLHttp.send(..

引用
原理都是sock构造http头来senddata。其他语言什么的比如perl也可以,目前比较简单的防
御伪造referer的方法是用验证码(Session)。现在有一些能防盗链软件的商业公司比如UUDOG,linkgate,VirtualWall
什么的,都是开发的应用于IIS上面的dll。有的是采用cookies验证、线程控制,有的是能随机生成文件名然后做URL重写。有的方法能的确达到不
错的效果.

一般的就是这样的了,但是服务器就不好实现伪造,只能制造不多的数据了,如果可以实现访问网页就可以
伪造,那就可以实现了真正的伪造,实现自然IP分布。

不过,js好像不支持修改,网上有代码,可是测试过是不行:

<script language="javascript">
var
oReq = new ActiveXObject("Microsoft.XMLHTTP");
oReq.Open("GET","b.php",false);
oReq.SetRequestHeader("Referer","");
oReq.Send();
document.write(oReq.responseText);
</script>


面是JS的代码,请求的b.php只要简单的把信息打印出来就知道了:

<?
$out="";
foreach($_SERVER
as $k=>$v){
$out.=$k." : ".$v."\n";
}
//可以写入文件做分析
file_put_contents(time().".txt",$out);
echo
'<pre>';
echo $out;
?>

引用
[HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, application/msword, application/vnd.ms-excel,
application/vnd.ms-powerpoint, application/x-shockwave-flash, */*
[HTTP_REFERER] =>
http://www.aslibra.com/test/referrer/a.php?1187692842
.....


的出来,修改并不成功,也就是没法做修改了,如果是出于安全,那也真的不给修改的,否则这个世界真的不安静了,特别像我这种可能做坏事的人,呵呵~~

❷ php到底怎么获取IP地址,为什么三种方法获取的IP都不一样

php获取真实IP地址,参考方法如下:

functionGetIP(){
if(getenv("HTTP_CLIENT_IP")&&strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
$ip=getenv("HTTP_CLIENT_IP");
elseif(getenv("HTTP_X_FORWARDED_FOR")&&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),"unknown"))
$ip=getenv("HTTP_X_FORWARDED_FOR");
elseif(getenv("REMOTE_ADDR")&&strcasecmp(getenv("REMOTE_ADDR"),"unknown"))
$ip=getenv("REMOTE_ADDR");
elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],"unknown"))
$ip=$_SERVER['REMOTE_ADDR'];
else
$ip="unknown";
return($ip);
}

❸ 如何利用php获取url反向代理后面的真实地址

下面的代码用于获得真实的客户端ip,俗话说,道高一尺魔高一丈,更高级的伪装能够骗过这种检测也有可能,不过至少让伪装的门槛提高不少。

function getip() {

$unknown = 'unknown';

if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown) ) {

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

} elseif ( isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown) ) {

$ip = $_SERVER['REMOTE_ADDR'];

}

/*

处理多层代理的情况

或者使用正则方式:$ip = preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : $unknown;

*/

if (false !== strpos($ip, ','))

$ip = reset(explode(',', $ip));

return $ip;

}
需要做下简单解释:
一、没有使用代理服务器的PHP获取客户端IP情况:
REMOTE_ADDR = 客户端IP
HTTP_X_FORWARDED_FOR = 没数值或不显示
二、使用透明代理服务器的情况:Transparent Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215)
这类代理服务器还是将客户端真实的IP发送给了访问对象,无法达到隐藏真实身份的目的.
三、使用普通匿名代理服务器的PHP获取客户端IP情况:Anonymous Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215)
这种情况下隐藏了客户端的真实IP,但是向访问对象透露了客户端是使用代理服务器访问它们的.
四、使用欺骗性代理服务器的情况:Distorting Proxies
REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163, 203.129.72.215)
这种情况下同样透露了客户端是使用了代理服务器,但编造了一个虚假的随机IP(220.4.251.159)代替客户端的真实IP来欺骗它.
五、使用高匿名代理服务器的PHP获取客户端IP情况:High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 没数值或不显示
无论是REMOTE_ADDR还是HTTP_FORWARDED_FOR,这些头消息未必能够取得到,因为不同的浏览器不同的网络设备可能发送不同的IP头消息.因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 获取的值可能是空值也可能是“unknown”值.

❹ PHP怎么禁止代理访问

要禁止代理访问,首先你要分辨对方是否使用了代理。
一般来说可以直接通过HTTP协议头中的REMOTE_ADDR、HTTP_VIA、HTTP_X_FORWARDED_FOR来判断。
比如,没有使用代理的情况下,后两个一般是空的,第一个为真实IP;
而使用了一般的代理的话,前两个会变成代理的IP,而第三个则是真实IP。
如果使用了一般的匿名代理的话,则三个都会变为代理的IP。
如果使用了欺骗型的匿名代理的话,前两个还是代理的IP,而第三个会被伪造为一个随机的IP。
如果使用了高级匿名代理的话,后两个和没有代理一样,是空的,第一个则为代理IP。
以上,由于HTTP协议头是很容易伪造的,一般很难判断用户是否使用了代理的,因为现在绝大多数人都是用的匿名代理,而一般要真的通过上面的方式能检测到的,很可能是只能通过代理访问网络的人,比如局域网之类。
不过如果你会JS的话,可以参考一下WebRTC,这个是HTML5带的一个API,可以直接获取到真实IP,然后发送回服务器,再和REMOTE_ADDR比对一下,就可以准确知道是否使用了代理了(使用了代理,那WebRTC获取到的肯定是和REMOTE_ADDR不一样的)。但是这个办法也仅限于使用了新版浏览器的用户(必须支持WebRTC),并且没有装屏蔽WebRTC的插件(可以通过Chrome的插件来禁用WebRTC的,较旧的浏览器也可以在配置里停用WebRTC),并且,也不是完全不可以伪造,因为随便写个脚本放在浏览器里替换掉默认的WebRTC API,就可以提供一个虚假的IP(不过就目前来看还没人这么干,大多数都是想办法直接停用WebRTC),所以这个办法也不是100%可靠的。
如果你可以准确判断代理了,就简单了,直接在代码里面die;掉就行了。

❺ php获得客户端的ip和端口号

$_SERVER['REMOTE_PORT'];//端口号
$_SERVER['SERVER_ADDR'];//ip

//补充
$_SERVER['HTTP_CLIENT_IP'];//代理端的(有可能存在,可伪造)
$_SERVER['HTTP_X_FORWARDED_FOR'];//用户是在哪个IP使用的代理(有可能存在,也可以伪造)

❻ 各位大虾,我现在需要利用php程序获得无线路由器里的客户端mac地址或者ip有没有什么好的方案。求完整代码

function ip(){
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){
$ip = getenv('HTTP_CLIENT_IP');
}elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){
$ip = getenv('HTTP_X_FORWARDED_FOR');
}elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){
$ip = getenv('REMOTE_ADDR');
}elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){
$ip = $_SERVER['REMOTE_ADDR'];
}
return preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : 'unknown';
}

回复 cheleimccoy:上面的程序函数,是用来获取访问你的网站的用户的浏览器端的ip的!其实你的无线路由使用浏览器来访问的时候也是访问的他的80端口,你其实可以想办法能不能把他里面的程序对接获取下

阅读全文

与phpremoteaddr伪造相关的资料

热点内容
如何验证web服务器是否正常工作 浏览:130
全球最大的加密货币网站 浏览:284
解压文件为什么有问号 浏览:389
php考试系统模板 浏览:431
pdf导出图片模糊 浏览:610
我的世界编玩边学服务器地址 浏览:456
基于单片机的火灾报警系统 浏览:166
上海追星用什么app 浏览:423
海马m5压缩机维修 浏览:98
抖音怎么给自己喜欢的加密 浏览:247
中国五大加密货币 浏览:263
程序员手疼7年查6处骨肿瘤 浏览:39
python列表对象的创建与删除 浏览:467
python删除excel表格中的一行 浏览:521
android数据库的增删改查 浏览:632
云服务器2g4g有什么区别 浏览:324
显示文件夹所有文件的文件名函数 浏览:213
可以在网站写代码的编译器 浏览:76
王者换服务器怎么不用重玩 浏览:328
武汉编译ipfs云存储器 浏览:52