admin 管理员组

文章数量: 1184232

鸽了这么久,终于来写这篇文章了,话说回来,这个方法是一个月前就开始用的了,现在才来写,因为我懒嘛,绝对不是因为我懒哈,是因为之前的方法一直不适合绝大多数用户,今天才发现了每个人都能用的方法。

起因是这样的,某一天我像往常一样刷着qq,突然在之前加的一个qq机器人群发现一个机器人发出这样一张卡片:谁在窥屏。我心想难不成你还真能知道我在窥屏?几秒钟后我傻眼了,该机器人返回了几个ip和浏览器ua信息,其中我的ip和手机型号赫然出现在我的眼前,难以置信,愣了半天后,心里立马冒出了好奇的想法,今天必须把这个原理搞明白,不然我会睡不着觉。经过一番询问老师(百度),明白了这个功能是通过qq加载xml卡片时会自动访问xml卡片中的图片链接,从而获取到正在看聊天记录的ip,正好前几天研究了xml卡片消息,明白原理后立马开始想思路复现。

0x01 php获取ip

因为不是很会php,就到网上找了个找,发现需要用到如下几个函数:
getenv('HTTP_CLIENT_IP')
getenv('HTTP_X_FORWARDED_FOR')
getenv('HTTP_X_FORWARDED')
getenv('HTTP_FORWARDED_FOR')
getenv('HTTP_FORWARDED')
以及变量:
$_SERVER['REMOTE_ADDR']
$_SERVER['HTTP_REFERER']
$_SERVER['HTTP_USER_AGENT']
开始构造完整代码,首先是在大佬文章中找到的获取真实ip的函数(直接白嫖):

function getIP() {
   
   
        if (getenv('HTTP_CLIENT_IP')) {
   
   
        $ip = getenv('HTTP_CLIENT_IP');
        }
        elseif (getenv('HTTP_X_FORWARDED_FOR')) {
   
   
        $ip = getenv('HTTP_X_FORWARDED_FOR');
        }
        elseif (getenv('HTTP_X_FORWARDED')) {
   
   
        $ip = getenv('HTTP_X_FORWARDED');
        }
        elseif (getenv('HTTP_FORWARDED_FOR')) {
   
   
        $ip = getenv('HTTP_FORWARDED_FOR');
 
        }
        elseif (getenv('HTTP_FORWARDED')) {
   
   
        $ip = getenv('HTTP_FORWARDED');
        }
        else {
   
   
        $ip = $_SERVER['REMOTE_ADDR'

本文标签: 卡片 QQ XML IP