导航:首页 > 编程语言 > 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伪造相关的资料

热点内容
ch编译器 浏览:445
java必须自己写一个编译器吗 浏览:933
如何制作androidrom 浏览:465
单片机万能板怎么写入程序 浏览:15
迈锐宝xl压缩比 浏览:335
靠算法买彩票 浏览:492
程序员考核d 浏览:237
自助游中国pdf 浏览:743
安卓p40是什么手机 浏览:84
24cxx编程器 浏览:588
阴阳师如何查看哪个服务器有ID 浏览:313
公务员照片压缩 浏览:455
编译的时候怎么找未定义的函数 浏览:349
有什么我的世界服务器 浏览:303
服务器亮绿灯是什么意思 浏览:634
python画的图如何保存高清版 浏览:496
10的搭接还用加密吗 浏览:370
bytedance这个文件夹是什么意思呢 浏览:593
算法站的客体 浏览:81
src文件夹c语言怎么运行 浏览:28