0×1 概述

腾讯御见威胁情报中心日前发现一广告分发平台被恶意嵌入挖矿JavaScript脚本,该挖矿攻击在江苏、湖南地区集中爆发。挖矿页面单日访问量近百万次,中招机器CPU资源被占用90%以上,直接影响系统运行。 

1.png

0×2 溯源&分析

2.png

此次恶意JavaScript代码存放在国内一个名为“聚赏吧”的电商平台服务器上,页面地址:http://www.jushangba.com/bt/c.html

c.html中导入的c.js为Coinhive JavaScript Miner代码,该代码基于CryptoNight挖矿算法,挖取数字加密货币—门罗币。

此外,为了不被轻易发现,该挖矿脚本仅在非IE浏览器内运行,并通过Math.random()设置50%的启动概率。这就意味着,当用户发现电脑卡顿、CPU占用率过高,怀疑有恶意程序运行进而进行确认时,挖矿环境并不一定重现。

3.png

通过进一步溯源分析,发现可疑广告页面(http://dsp.189zj.cn:8889/api/show.jsp)通过Iframe嵌入了c.html代码。

4.png

该页面通过广告平台投放到一些正常的网页和客户端程序,进行二次传播。当用户看到该广告页面,或者承载其广告的网页/客户端程序在后台静默运行时(此时用户看不到广告),无论用户是否点击查看广告,均会触发挖矿代码执行。

目前已发现有上千款软件受影响:

5.png

目前门罗币的价格约为1800元人民币,按一台普通电脑1060显卡,算力大概是3000 H/s计算,一台机器每天可以挖到0.02个门罗币,折合人民币为34元。无利不起早,有利熬三更,那么这帮“勤奋的”黑客们到底是谁呢?

show.js广告页面内嵌入的JavaScript挖矿代码是网站管理员所为,并非第三方劫持所致,而show.js的投放存在网络劫持的可能性:

1、 首先从jushangba.com 和 189zj.cn的网站备案信息来看,分别从属于 “杭州天卓网络有限公司” 和 “杭州联润科技有限公司”。

6.png

2、 从jushangba.com 和 189zj.cn的注册信息来看,两个域名均为同一个人或公司所注册,可以确认“杭州天卓网络有限公司” 和 “杭州联润科技有限公司”关系微妙。 

7.png

3、 从受影响的用户分布地区来看,主要集中在江苏、湖南等地区,另外通过其IP,可以明显的看出,其IP集中在国内某运营商IP段,可能存在网络劫持。

8.png

0×3 IOC

URL:

http://dsp.189zj.cn:8889/api/show.jsp

http://www.jushangba.com/bt/c.html

http://www.jushangba.com/bt/c.js

MySQL官方最近做了一个大的安全漏洞补丁,修复了25 个安全漏洞,关于这些漏洞细节官方和媒体目前为止还有比较少的介绍和分析文章。在此笔者搜集下相关的详细,从邮件讨论组趴到一些细节信息,在此介绍一下几个比较重要的、高危的漏洞。包括CVE-2018-2696,CVE-2018-2591和CVE-2018-2562。

CVE-2018-2696 mysql: sha256_password 认证长密码拒绝式攻击

该漏洞源于MySQL sha256_password认证插件,该插件没有对认证密码的长度进行限制,而直接传给my_crypt_genhash()用SHA256对密码加密求哈希值。该计算过程需要大量的CPU计算,如果传递一个很长的密码时候,会导致CPU耗尽。而且该公式Mysql的实现中使用alloca()进行内存分配,无法对内存栈溢出保护,可能导致内存泄露、进程崩溃,从而可能实现代码执行。

MySQL <= 5.6.38 和MySQL <= 5.7.20 受影响。mariadb分支版本不受该漏洞影响。

CVE-2018-2562 MySQL**分区未指定的漏洞**

漏洞源于 Oracle MySQL 服务器分区组件。影响5.5.58及之前版本,5.6.38及之前的版本,5.7.19及之前的版本。该漏洞允许低权限通过多种协议对服务器进行拒绝式攻击,也可以无需授权更新、插入、删除数据库中的可以访问的数据。

mariadb分支版本也受该漏洞影响。

CVE-2018-2591 MySQL**分区未指定的漏洞**

漏洞源于 Oracle MySQL 服务器分区组件。影响5.6.38及之前的版本,5.7.19及之前的版本。该漏洞允许低权限通过多种协议对服务器进行拒绝式攻击。

mariadb分支版本不受该漏洞影响。

更多信息参考 :http://www.oracle.com/technetwork/security-advisory/cpujan2018-3236628.html

漏洞利用条件和方式:

目前还未有具体的POC,但是通过漏洞介绍,三者都可以通过远程攻击。

漏洞防范和修复:

        1、目前Oracle官方已经最新版本,建议自建MySQL服务用户及时手工下载更新:

参考信息:

为了进一步给新老客户提供更优质全面的服务,在[email protected]子芽的领导下,经过市场运营部门的不懈努力和公司全体同事的配合,悬镜安全获得中国信息安全测评中心国家信息安全服务资质【安全工程类一级】资质认证,在持续提升技术实力和服务水平的道路上百尺竿头更进一步。

报告.png

信息安全服务资质核查报告

中国信息安全测评中心是经中央批准成立的国家信息安全权威测评机构,是国家信息安全保障体系中的重要基础设施之一,在国家专项投入的支持下,拥有国内一流的测试评估技术装备,具有专门面向党政机关、基础信息网络和重要信息系统开展风险评估的国家专控队伍。

安全工程资质1.png

信息安全服务资质证书

获得中国信息安全测评中心颁发的安全工程类一级资质认证,代表着悬镜安全在行业特性安全需求分析、企业级安全工程解决方案、服务器防黑加固、服务器安全代维、服务器安全巡检等安全服务水平已经进入行业一流行列,安全服务的设计及实施具备了权威认可的标准性和合规性。同时也意味着悬镜安全团队在安全服务的领域中获得了国家层面的认可。

测评中心截图.png

图片来自中国信息安全测评中心官网 

自悬镜安全成立以来,一直专注于【云+端】一站式安全加固解决方案,数年来服务了众多不同行业的客户,解决方案覆盖了大型国企、金融、商超、高校、开发服务商、云主机服务商、公有云市场等各类企业。 获得中国信息检测安全测评中心的资质不是终点,而是起点。在继往开来的路上,悬镜安全将始终贯彻“安全本应如此简单”的服务理念,不断打磨服务技术,提升业务水平,给广大新老客户提供更加可靠、快捷、方便的安全服务。

安全服务.png

“悬镜”是安普诺旗下专业云主机安全品牌,“悬镜安全实验室”是隶属于安普诺的信息安全研究团队。悬镜安全为提供更高效率的安全年服务,已全面入驻阿里云、华为云、腾讯云等安全服务市场,安全服务解决方案包括服务器安全加固、服务器安全巡检、高级渗透测试、安全事件应急响应、APP风险评估等。

本文作者:唯念那抹瑞利蓝

今天我们所讲的是GPS欺骗的方式和简单的定义。让大家对GPS欺骗这个方面有所了解。GPS是全世界地一个卫星定位系统,由美国制造。


0×01 例子

2011年伊朗劫持美国无人机 详细见http://news.163.com/11/1217/09/7LFDI7HE00014JB5.html
这种是被新闻称作伊朗的哄骗法

通过对通信进行干扰,迫使这架飞机进入自动驾驶状态,然后给这架无人机发送一个gps信号,从而让它降落

1.jpg

0×02 Why?
很多朋友可能要问Why?为什么GPS能够被欺骗呢?
其实是这样的GPS接受卫星所发送给它的信号,从而让它知道自己现在在哪里,这种传播是由卫星单向传输给GPS接收器的。
如果我们用一个GPS模拟器把自己伪装一下变成卫星,从而发送一个虚假的信号给GPS接收器,那么这个时候接收器会接受到我们GPS 模拟器所发送出的信号而不是卫星的信号。

这是为什么呢?这其实很简单,原因就是我们GPS模拟器所发送的信号比卫星发送的信号强,因为卫星在太空中发送,信号传播经过了很多距离,so信号就当然比我们GPS模拟器所发送的信号要微弱。这样的话我们就构成了一个GPS欺骗。 这个好比wifi一样,谁的信号强,传输速度快,不给钱,安全系数高,我们就用那个的道理一样。      ——————————————————这个就是GPS欺骗的方法

0×03 GPS的安全为什么会那么重要呢?
为什么重要,这个问题很好。想想如果在战场上你方1架轰炸机本想去给敌人的阵营送上一个大大的快递时,中间的GPS定位被欺骗了从而导致目标位置变成了你们家,此时如果飞行员还以为GPS是正确的,相信可以靠他的话,想想后果吧。ps:(您有一个炸弹快递请接受)
你以为GPS欺骗就只能这样了吗?不,不是的。它还可以扰乱我们的定时系统/改变我们的基站/改变授时信息。

0×04 对无人机的欺骗(下面的资料由朋友提供)

2.jpg

很有趣的一张图

这张图的原理是.禁飞区位置欺骗。我们都知道无人机在禁飞区是不能起飞的,即使是到达了禁飞区也会自动降落。

所以我们可以发送一段信号让无人机以为自己在禁飞区从而降落

这种方法也很常用


3.jpg

众所周知,当无人机启动后如果能定位当前的位置就会把它设定为返航点。如果无人机本身没有设定禁飞区的限制,针对返航点的攻击也不失为一种有效的方式。因为当遥控器和无人机失联的时候,无人机会自动朝着返航点飞行,并最终回到返航点。当我们利用伪造的GPS信号欺骗它目前已经处在返航点了,这样无人机就会乖乖地降落了。即使不知道返航点的位置,仍然可以欺骗它当前所处的位置进而改变返航的方向。比如,在无人机展览上进行飞行表演时候,发射一个大功率的北极的GPS信号,那么就会看到“一群无人机往南飞”的“壮观”景象~~


4.jpg

目前有些无人机支持航点飞行,即先在地图上选点,无人机会沿着选定的点飞行。这样的功能同样是基于GPS定位的。当无人机朝着下一个选定的地点飞行的时候被伪造的GPS地点欺骗后,很明显无人机就会背叛飞行的轨迹朝着被欺骗位置和下一个选定点位置连线的方向飞行,直到到达选定点。当无人机自己所在位置都被欺骗了的话,基于GPS的功能都将错乱。如果被欺骗的位置过远的话,那么选定点将很难到达了。

0×05 本篇文章就到这里了,请利用好你们的技能,为网络安全做一个守护者。

作为一个技术党

作为好奇心暴强的人

不搞(zuo)一波岂不是很对不起自己?

a569d044fb9c4f6ab775e64518a4c2e3.gif

GPS相关内容推荐:

1、 HTML5之GPS定位保存【附源码】    

2、源码分享:代码完结一款多用户Gps定位平台   

3、克里姆林宫疑似开启GPS干扰器:当地民众定位异常     

4、时空线索——Hack Key 邂逅 GPS——袁舰、张婉桥   

Hack Key,把它作为一个中间件,接插在键盘和主机之间,就能够实时获取到按键的信息,通过分析这些按键信息能够获取到用户的许多敏感信息,例如帐号、密码等。

>>>>>>  黑客入门必备技能  带你入坑和逗比表哥们一起聊聊黑客的事儿,他们说高精尖的技术比农药都好玩~

零、前言

Typecho是一个轻量版的博客系统,前段时间爆出getshell漏洞,网上也已经有相关的漏洞分析发布。这个漏洞是由PHP反序列化漏洞造成的,所以这里我们分析一下这个漏洞,并借此漏洞深入理解PHP反序列化漏洞。

一、 PHP反序列化漏洞

1.1 漏洞简介

PHP反序列化漏洞也叫PHP对象注入,是一个非常常见的漏洞,这种类型的漏洞虽然有些难以利用,但一旦利用成功就会造成非常危险的后果。漏洞的形成的根本原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。反序列化漏洞并不是PHP特有,也存在于Java、Python等语言之中,但其原理基本相通。

1.2 漏洞原理

接下来我们通过几个实例来理解什么是PHP序列化与反序列化以及漏洞形成的具体过程,首先建立1.php文件文件内容如下:

hetian417.png

文件中有一个TestClass类,类中定义了一个$variable变量和一个PrintVariable函数,然后实例化这个类并调用它的方法,运行结果如下:

hetian497.png

这是一个正常的类的实例化和成员函数调用过程,但是有一些特殊的类成员函数在某些特定情况下会自动调用,称之为magic函数,magic函数命名是以符号__开头的,比如__construct当一个对象创建时被调用,__destruct当一个对象销毁时被调用,__toString当一个对象被当作一个字符串被调用。为了更好的理解magic方法是如何工作的,在2.php中增加了三个magic方法,__construct, __destruct和__toString。

hetian729.png

运行结果如下,注意还有其他的magic方法,这里只列举了几个。

image.png

php允许保存一个对象方便以后重用,这个过程被称为序列化。为什么要有序列化这种机制呢?因为在传递变量的过程中,有可能遇到变量值要跨脚本文件传递的过程。试想,如果在一个脚本中想要调用之前一个脚本的变量,但是前一个脚本已经执行完毕,所有的变量和内容释放掉了,我们要如何操作呢?难道要前一个脚本不断的循环,等待后面脚本调用?这肯定是不现实的。serialize和unserialize就是用来解决这一问题的。serialize可以将变量转换为字符串并且在转换中可以保存当前变量的值;unserialize则可以将serialize生成的字符串变换回变量。让我们在3.php中添加序列化的例子,看看php对象序列化之后的格式。

image.png

输出如下

image.png

O表示对象,4表示对象名长度为4,”User”为类名,2表示成员变量个数,大括号里分别为变量的类型、名称、长度及其值。想要将这个字符串恢复成类对象需要使用unserialize重建对象,在4.php中写入如下代码

image.png

运行结果

hetian1200.png

magic函数__construct和__destruct会在对象创建或者销毁时自动调用,__sleep方法在一个对象被序列化的时候调用,__wakeup方法在一个对象被反序列化的时候调用。在5.php中添加这几个magic函数的例子。

image.png

运行结果

image.png

OK,到此我们已经知道了magic函数、序列化与反序列化这几个重要概念,那么这个过程漏洞是怎么产生的呢?我们再来看一个例子6.php

image.png

这段代码包含两个类,一个example和一个process,在process中有一个成员函数close(),其中有一个eval()函数,但是其参数不可控,我们无法利用它执行任意代码。但是在example类中有一个__destruct()析构函数,它会在脚本调用结束的时候执行,析构函数调用了本类中的一个成员函数shutdown(),其作用是调用某个地方的close()函数。于是开始思考这样一个问题:能否让他去调用process中的close()函数且$pid变量可控呢?答案是可以的,只要在反序列化的时候$handle是process的一个类对象,$pid是想要执行的任意代码代码即可,看一下如何构造POC

image.png

执行效果

image.png

当我们序列化的字符串进行反序列化时就会按照我们的设定生成一个example类对象,当脚本结束时自动调用__destruct()函数,然后调用shutdown()函数,此时$handle为process的类对象,所以接下来会调用process的close()函数,eval()就会执行,而$pid也可以进行设置,此时就造成了代码执行。这整个攻击线路我们称之为ROP(Return-oriented programming)链,其核心思想是在整个进程空间内现存的函数中寻找适合代码片断(gadget),并通过精心设计返回代码把各个gadget拼接起来,从而达到恶意攻击的目的。构造ROP攻击的难点在于,我们需要在整个进程空间中搜索我们需要的gadgets,这需要花费相当长的时间。但一旦完成了“搜索”和“拼接”,这样的攻击是无法抵挡的,因为它用到的都是程序中合法的的代码,普通的防护手段难以检测。反序列化漏洞需要满足两个条件:

1、程序中存在序列化字符串的输入点
2、程序中存在可以利用的magic函数

接下来通过Typecho的序列化漏洞进行实战分析。

二 Typecho漏洞分析

漏洞的位置发生在install.php,首先有一个referer的检测,使其值为一个站内的地址即可绕过。

image.png

入口点在232行

image.png

这里将cookie中的__typecho_config值取出,然后base64解码再进行反序列化,这就满足了漏洞发生的第一个条件:存在序列化字符串的输入点。接下来就是去找一下有什么magic方法可以利用。先全局搜索__destruct()和__wakeup()

image.png

找到两处__destruct(),跟进去没有可利用的地方,跟着代码往下走会实例化一个Typecho_Db,位于var\Typecho\Db.php,Typecho_Db的构造函数如下

image.png

在第120行使用.运算符连接$adapterName,这时$adapterName如果是一个实例化的对象就会自动调用__toString方法(如果存在的话),那全局搜索一下__toString()方法。找到3处

image.png

前两处无法利用,跟进第三处,__toString()在var\Typecho\Feed.php 223行

hetian2655.png

跟进代码在290处有如下代码

image.png

如何$item['author']是一个类而screenName是一个无法被直接调用的变量(私有变量或根本就不存在的变量),则会自动调用__get() magic方法,进而再去寻找可以利用的__get()方法,全局搜索

image.png

共匹配到10处,其中在var\Typecho\Request.php中的代码可以利用,跟进

image.png

再跟进到get函数

image.png

接着进入_applyFilter函数

image.png

可以看到array_map和call_user_func函数,他们都可以动态的执行函数,第一个参数表示要执行的函数的名称,第二个参数表示要执行的函数的参数。我们可以在这里尝试执行任意代码。接下来梳理一下整个流程,数据的输入点在install.php文件的232行,从外部读入序列化的数据。然后根据我们构造的数据,程序会进入Db.php的__construct()函数,然后进入Feed.php的__toString()函数,再依次进入Request.php的__get()、get()、_applyFilter()函数,最后由call_user_func实现任意代码执行,整个ROP链形成。构造POC如下

image.png

POC的22行其实与反序列化无关,但是不加这一行程序就不会有回显,因为在 install.php 的开头部分调用了程序调用了ob_start(),它会开启缓冲区并将要输出的内容都放进缓冲区,想要使用的时候可以再取出。但是我们的对象注入会在后续的代码中造成数据库错误

image.png

image.png

然后会触发exception,其中的ob_end_clean()会将缓冲区中的内容清空,导致无法回显。

hetian3363.png

想要解决这个问题需要在ob_end_clean()执行之前是程序退出,两种方法:

1、使程序跳转到存在exit()的代码段

2、使程序提前报错,退出代码

POC中使用的是第二种方法

image.png

解决了上述问题后就可以执行任意代码并能看到回显了,执行的时候在http头添加referre使其等于一个站内地址,然后在cookie中添加字段__typecho_config,其值为上述exp的输出。

image.png

有些利用方式并不需要回显,比如写个shell什么的,POC如下

image.png

执行结果,在根目录生成shell.php

image.png

三 声明

文章旨在普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征、挖掘技巧等。若读者因此做出危害网络安全的行为后果自负,与合天智汇及本人无关,特此声明。(PS:本文为合天原创奖励文章,未经允许,禁止以任何形式转载!)

MySQL官方最近做了一个大的安全漏洞补丁,修复了25 个安全漏洞,关于这些漏洞细节官方和媒体目前为止还有比较少的介绍和分析文章。在此笔者搜集下相关的详细,从邮件讨论组趴到一些细节信息,在此介绍一下几个比较重要的、高危的漏洞。包括CVE-2018-2696,CVE-2018-2591和CVE-2018-2562。

CVE-2018-2696 mysql: sha256_password 认证长密码拒绝式攻击

该漏洞源于MySQL sha256_password认证插件,该插件没有对认证密码的长度进行限制,而直接传给my_crypt_genhash()用SHA256对密码加密求哈希值。该计算过程需要大量的CPU计算,如果传递一个很长的密码时候,会导致CPU耗尽。而且该公式Mysql的实现中使用alloca()进行内存分配,无法对内存栈溢出保护,可能导致内存泄露、进程崩溃,从而可能实现代码执行。

MySQL <= 5.6.38 和MySQL <= 5.7.20 受影响。mariadb分支版本不受该漏洞影响。

CVE-2018-2562 MySQL**分区未指定的漏洞**

漏洞源于 Oracle MySQL 服务器分区组件。影响5.5.58及之前版本,5.6.38及之前的版本,5.7.19及之前的版本。该漏洞允许低权限通过多种协议对服务器进行拒绝式攻击,也可以无需授权更新、插入、删除数据库中的可以访问的数据。

mariadb分支版本也受该漏洞影响。

CVE-2018-2591 MySQL**分区未指定的漏洞**

漏洞源于 Oracle MySQL 服务器分区组件。影响5.6.38及之前的版本,5.7.19及之前的版本。该漏洞允许低权限通过多种协议对服务器进行拒绝式攻击。

mariadb分支版本不受该漏洞影响。

更多信息参考 :http://www.oracle.com/technetwork/security-advisory/cpujan2018-3236628.html

漏洞利用条件和方式:

目前还未有具体的POC,但是通过漏洞介绍,三者都可以通过远程攻击。

漏洞防范和修复:

        1、目前Oracle官方已经最新版本,建议自建MySQL服务用户及时手工下载更新:

参考信息:

为了进一步给新老客户提供更优质全面的服务,在[email protected]子芽的领导下,经过市场运营部门的不懈努力和公司全体同事的配合,悬镜安全获得中国信息安全测评中心国家信息安全服务资质【安全工程类一级】资质认证,在持续提升技术实力和服务水平的道路上百尺竿头更进一步。

报告.png

信息安全服务资质核查报告

中国信息安全测评中心是经中央批准成立的国家信息安全权威测评机构,是国家信息安全保障体系中的重要基础设施之一,在国家专项投入的支持下,拥有国内一流的测试评估技术装备,具有专门面向党政机关、基础信息网络和重要信息系统开展风险评估的国家专控队伍。

安全工程资质1.png

信息安全服务资质证书

获得中国信息安全测评中心颁发的安全工程类一级资质认证,代表着悬镜安全在行业特性安全需求分析、企业级安全工程解决方案、服务器防黑加固、服务器安全代维、服务器安全巡检等安全服务水平已经进入行业一流行列,安全服务的设计及实施具备了权威认可的标准性和合规性。同时也意味着悬镜安全团队在安全服务的领域中获得了国家层面的认可。

测评中心截图.png

图片来自中国信息安全测评中心官网 

自悬镜安全成立以来,一直专注于【云+端】一站式安全加固解决方案,数年来服务了众多不同行业的客户,解决方案覆盖了大型国企、金融、商超、高校、开发服务商、云主机服务商、公有云市场等各类企业。 获得中国信息检测安全测评中心的资质不是终点,而是起点。在继往开来的路上,悬镜安全将始终贯彻“安全本应如此简单”的服务理念,不断打磨服务技术,提升业务水平,给广大新老客户提供更加可靠、快捷、方便的安全服务。

安全服务.png

“悬镜”是安普诺旗下专业云主机安全品牌,“悬镜安全实验室”是隶属于安普诺的信息安全研究团队。悬镜安全为提供更高效率的安全年服务,已全面入驻阿里云、华为云、腾讯云等安全服务市场,安全服务解决方案包括服务器安全加固、服务器安全巡检、高级渗透测试、安全事件应急响应、APP风险评估等。

上周通过一个例子让大家大致了解了sqlmap 如何添加以及修改payload,本周就让我们通过完整地学习sqlmap与payload有关的xml文件下的payload文件,我们都知道sqlmap有6大探测注入类型的技术,分别是

  • U: UNION query SQL injection(可联合查询注入)
  • E: Error-based SQL injection(报错型注入)
  • B: Boolean-based blind SQL injection(布尔型注入)
  • T: Time-based blind SQL injection(基于时间延迟注入)
  • S: Stacked queries SQL injection(可多语句查询注入)
  • Q:Inline queries(嵌套查询注入)通过参数–technique来指定sqlmap使用的探测技术,默认情况下会测试所有的方式。简单说下5大探测技术的思想为下面讲payload做铺垫。

1.UNION query SQL injection(可联合查询注入)

联合查询简单来说就是通过union关键字将多条查询语句拼接在一起,并且把查询结果作为一个结果以一个表格的形式输出到页面,需要注意的是查询语句要符合1.相同列数2.相似的数据类型3.相同的编码。示例语句:-1′ union select 1,(select user()),(select version())–+,如果 查询结果无法返回到页面,则就需要考虑盲注。

2.Error-based SQL injection(报错型注入)

报错注入的核心思想是通过数据库的“人性化的报错定位机制”将我们要查询的数据通过报错的方式直接回显到页面上来,示例语句:’ and (extractvalue(1,concat(0x7e,(select user()),0x7e)))–+,当然如果报错的数据不能回显到页面上来,就无法使用报错注入,这时候我们就可以考虑是否存在盲注。

3.Boolean-based blind SQL injection(布尔型注入)

布尔盲注的核心思想就是通过判断两种不同的页面状态来进一步推断注入语句是否被执行以及数据是否存在。示例语句:1′ and database() regexp ‘^1′ –+,当我们输入的注入语句无法通过回显以及报错的方式来获取数据,这时候就可能存在盲注,通过判断有跟没有、对或错来判断regexp 是否匹配到数据了。

4.Time-based blind SQL injection(基于时间延迟注入)

如果在测试的时候发现都不存在前面三种所说的注入,那就有可能是时间盲注,时间盲注的特点是无回显,无报错,也没有多种页面状态。这时候就需要通过增加sleep()函数来判断注入语句的执行,而布尔则是根据页面的对错来判断。示例语句:1′ and sleep(5)–+ 如果sleep则说明存在时间盲注

5.Stacked queries SQL injection(可多语句查询注入)

多语句查询注入也叫做堆叠查询,与联合查询有点相似,都可以多条语句查询,堆叠查询的关键是分号(;)比较直观的就是如果分号被过滤或者无法绕过就无法注入,当然还有一些数据库引擎不支持,权限不足等限制,实际工作中遇到的也很比较少,这里就不做过多讨论。

6.Inline queries(内联查询注入)

碰到的比较少,这里暂不做过多讨论。

sqlmap根据6大类型探测技术生成的payload就放在sqlmap源码中\xml\payloads文件中,根据探测技术分为6个后缀为.xml的文件,每个xml文件分别存放每种注入技术的payload。

sqlmap的payloads文件:

文件.png

step1:

首先我们来了解下xml是什么,xml就是可扩展标记语言,标准通用标记语言的子集,简单来说就是sqlmap用xml语言来定义多个不同的标签组成一个payload的模板,每个标签有设置不同的等级,通过这样的方式可以实现灵活组合和调用payload。所以我们就必须先了解sqlmap定义的每个标签的意思和作用。

step2:

标签的意思和作用可以直接通过在sqlmap源码的\xml文件夹中的boundaries.xml文件以及\xml\payloads文件夹下的.xml文件的注释中查看,通过查询xml文件中的注释,我们知道sqlmap上的boundaries.xml定义的<boundary以及payload文件下的xml定义的<test标签均与sqlmap的payload有密切关系。

<boundary定义了sqlmap注入语句的边界问题,包括注入的发包数量等级,使用的查询从句,注入的位置,使用的特殊字符,前缀,后缀等。为我们清晰地划分了sqlmap注入时的所需要的各个模块等级。

登记.png

<test则定义了比较细致完整的测试实例,俗称payload。

pay.png

由上面的<boundary<test相结合我们可以得到如下测试语句。

语句.png

最终的payload = where + boundary.prefix+test.payload+boundary.suffix,影响最终payload的生成主要由<clause,<where标签决定的,当且仅当某个boundary元素的where节点的值包含test元素的子节点where的值,clause节点的值包含test元素的子节点的clause的值时候,该boundary才能和当前的test匹配生成最终的payload。经过测试发现除了这两个文件决定最终payload的生成,还包括sqlmap使用的注入方式以及payload使用的查询语句有关。如果把这两个文件比作两个集合,生成的payload比作两个集合的映射,则这两个集合之间的映射关系是多对多的关系。

关系1.png

guanxi  2.png

#step2.1:

下面我们就具体来这两个文件下,具体每个标签的作用,首先来看 boundaries.xml文件吧,下图所示的是一个完整的<boundary模板里面分别定义了<level,<clause,<where,<ptype,<prefix,<suffix六个标签。

biaoqian.png

<level标签:

Sub-tag: <level
From which level check for this test.
Valid values:
  1: Always (<100 requests)
  2: Try a bit harder (100-200 requests)
  3: Good number of requests (200-500 requests)
  4: Extensive test (500-1000 requests)
  5: You have plenty of time (1000 requests)

<level标签就是我们使用sqlmap注入时候–level的命令,这个标签分别定义了1-5个等级的发包数量,默认是1,表示做最少的检测,level越高,检测的数量越高。level等于2时会检测cookie字段是否有注入,等于3时会检测User-Agent、Host、Referer等HTTP的头部字段是否有注入。

<clause标签:

Sub-tag: <clause
In which clause the payload can work.
NOTE: for instance, there are some payload that do not have to betested as soon as it has been identified whether or not the injection is within a WHERE clause condition.
Valid values:
            0: Always
            1: WHERE / HAVING
            2: GROUP BY
            3: ORDER BY
            4: LIMIT
            5: OFFSET
            6: TOP
            7: Table name
            8: Column name
            9: Pre-WHERE (non-query)
 A comma separated list of these values is also possible.

该标签说明了sqlmap使用的条件从句,其中always表示测试所有

<where标签:

Sub-tag: <where
Where to add our '<prefix <payload<comment <suffix' string.
        Valid values:
            1: When the value of <test's <where is 1.
            2: When the value of <test's <where is 2.
            3: When the value of <test's <where is 3.
      A comma separated list of these values is also possible.

该标签定义了payload写入的位置详见<test的解释

<ptype标签:

    Sub-tag: <ptype
        What is the parameter value type.
        Valid values:
            1: Unescaped numeric #数字型,输入语句中的参数不需要加入
            2: Single quoted string #单引号的字符型
            3: LIKE single quoted string #like+单引号
            4: Double quoted string #双引号
            5: LIKE double quoted string #like+双引号

举个栗子来说:假设如下查询语句?id=1' union SELECT * FROM Persons WHERE City='Beijing'--+其中?id=1后面的单引号是由前缀标签定义的,–+是由后缀标签定义的,而中间语句所要使用的字符则是由<ptype标签定义的,简单来说就是参数的类型。

<prefix标签:

Sub-tag: <prefix
 A string to prepend to the payload.ad.

注入语句的前缀定义了注入中常用到闭合或者注释的字符,例如 右括号),单引号加右括号’),两个右括号))等等。

<suffix标签:

Sub-tag: <suffix
 A string to append to the payload.

顾名思义就是定义了SQL注入的语句的后缀,比如说常见的注释符、也可能是另外的sql语句看具体情况。

#step2.2:

一个完整的test payload模板:部分截图如下

ruxia.png

里面定义了比<boundary更多的标签,同时<test里面也包含了boundary标签的内容

    Sub-tag: <title
        Title of the test..

<title这个没什么好解释的就是每个payload的标题

    Sub-tag: <stype
        SQL injection family type.

        Valid values:
            1: Boolean-based blind SQL injection
            2: Error-based queries SQL injection
            3: Inline queries SQL injection
            4: Stacked queries SQL injection
            5: Time-based blind SQL injection
            6: UNION query SQL injection

<stype说明了每个payload的注入类型,分别就是我们上述所说的6种sqlmap常用的注入类型。

    Sub-tag: <level
        From which level check for this test.

        Valid values:
            1: Always (<100 requests)
            2: Try a bit harder (100-200 requests)
            3: Good number of requests (200-500 requests)
            4: Extensive test (500-1000 requests)
            5: You have plenty of time (1000 requests)

<level为每个payload的发包数量的等级,与boundary中的level的定义一致。

    Sub-tag: <risk
        Likelihood of a payload to damage the data integrity.
        Valid values:
            1: Low risk
            2: Medium risk
            3: High risk

<risk为每个payload的风险等级,等级越高对数据库的造成的破坏越大。

Sub-tag: <clause
In which clause the payload can work.
NOTE: for instance, there are some payload that do not have to be
tested as soon as it has been identified whether or not the
 injection is within a WHERE clause condition.
Valid values:
            0: Always
            1: WHERE / HAVING
            2: GROUP BY
            3: ORDER BY
            4: LIMIT
            5: OFFSET
            6: TOP
            7: Table name
            8: Column name
            9: Pre-WHERE (non-query)
A comma separated list of these values is also possible.

<clause为每个payload使用的sql查询从句与boundary中的clause定义一致。

Sub-tag: <where
Where to add our '<prefix <payload<comment <suffix' string.
Valid values:
1: Append the string to the parameter original value
2: Replace the parameter original value with a negative random
               integer value and append our string
3: Replace the parameter original value with our string

<where为每个payload<prefix <payload<comment <suffix要插入的位置

Sub-tag: <vector
  The payload that will be used to exploit the injection point.

<vectorsql注入模板

    Sub-tag: <request
        What to inject for this test.

<requestsql注入的请求测试

Sub-tag: <payload
            The payload to test for.

<payloadSQL注入的request请求中payload

Sub-tag: <comment
 Comment to append to the payload, before the suffix.

<comment一般在payload之后前缀之前

Sub-tag: <char
Character to use to bruteforce number of columns in UNIONquery SQL injection tests.

<char在union查询时字符串使用的列数

Sub-tag: <columns
Range of columns to test for in UNION query SQL injection tests.

<columnsunion查询时用来判断列数

    Sub-tag: <response
        How to identify if the injected payload succeeded.

<response通过SQL注入的response返回包,一般用来判断注入是否成功,

Sub-tag: <comparison
Perform a request with this string as the payload and compare
the response with the <payload response. Apply the comparison
            algorithm.
NOTE: useful to test for boolean-based blind SQL injections.

<comparison通常用在boolean_blind.xml文件中的布尔盲注用来做比较,判断页面状态

Sub-tag: <grep
Regular expression to grep for in the response body.
NOTE: useful to test for error-based SQL injection.e.

<grep通常用于报错注入的时候判断

Sub-tag: <time
Time in seconds to wait before the response is returned
NOTE: useful to test for time-based blind and stacked queries
SQL injections.

<time时间盲注和堆叠查询使用

Sub-tag: <union
Calls unionTest() function.
NOTE: useful to test for UNION query (inband) SQL injection.

<stype可以注入成功的union语句

Sub-tag: <details
   Which details can be infered if the payload succeed.

<detailssqlmap输出payload的详情,有三个子节点分别是<dbms<dbms_version<dbms_version

Sub-tags: <dbms
 What is the database management system (e.g. MySQL).

<dbms子节点表示数据库类型

Sub-tags: <dbms_version
 What is the database management system version (e.g. 5.0.51).

<dbms_version子节点表示数据库版本

Sub-tags: <os
 What is the database management system underlying operating
system.

<os子节点表示操作系统的类型

step3:

当然sqlmap的注入除了需要payload还有一些其他的xml文件,如下图所示

xiatu.png

想要了解每个标签的作用效果,我们可以通过sqlmap丰富的指令指定使用的xml文件,如果没有指令可以指定xml我们可以手动通过增加、修改、删除xml文件下的元素,来缩小范围,这样我们就能知道每个标签的作用效果。

640.webp.jpg

上周通过一个例子让大家大致了解了sqlmap 如何添加以及修改payload,本周就让我们通过完整地学习sqlmap与payload有关的xml文件下的payload文件,我们都知道sqlmap有6大探测注入类型的技术,分别是

  • U: UNION query SQL injection(可联合查询注入)
  • E: Error-based SQL injection(报错型注入)
  • B: Boolean-based blind SQL injection(布尔型注入)
  • T: Time-based blind SQL injection(基于时间延迟注入)
  • S: Stacked queries SQL injection(可多语句查询注入)
  • Q:Inline queries(嵌套查询注入)通过参数–technique来指定sqlmap使用的探测技术,默认情况下会测试所有的方式。简单说下5大探测技术的思想为下面讲payload做铺垫。

1.UNION query SQL injection(可联合查询注入)

联合查询简单来说就是通过union关键字将多条查询语句拼接在一起,并且把查询结果作为一个结果以一个表格的形式输出到页面,需要注意的是查询语句要符合1.相同列数2.相似的数据类型3.相同的编码。示例语句:-1′ union select 1,(select user()),(select version())–+,如果 查询结果无法返回到页面,则就需要考虑盲注。

2.Error-based SQL injection(报错型注入)

报错注入的核心思想是通过数据库的“人性化的报错定位机制”将我们要查询的数据通过报错的方式直接回显到页面上来,示例语句:’ and (extractvalue(1,concat(0x7e,(select user()),0x7e)))–+,当然如果报错的数据不能回显到页面上来,就无法使用报错注入,这时候我们就可以考虑是否存在盲注。

3.Boolean-based blind SQL injection(布尔型注入)

布尔盲注的核心思想就是通过判断两种不同的页面状态来进一步推断注入语句是否被执行以及数据是否存在。示例语句:1′ and database() regexp ‘^1′ –+,当我们输入的注入语句无法通过回显以及报错的方式来获取数据,这时候就可能存在盲注,通过判断有跟没有、对或错来判断regexp 是否匹配到数据了。

4.Time-based blind SQL injection(基于时间延迟注入)

如果在测试的时候发现都不存在前面三种所说的注入,那就有可能是时间盲注,时间盲注的特点是无回显,无报错,也没有多种页面状态。这时候就需要通过增加sleep()函数来判断注入语句的执行,而布尔则是根据页面的对错来判断。示例语句:1′ and sleep(5)–+ 如果sleep则说明存在时间盲注

5.Stacked queries SQL injection(可多语句查询注入)

多语句查询注入也叫做堆叠查询,与联合查询有点相似,都可以多条语句查询,堆叠查询的关键是分号(;)比较直观的就是如果分号被过滤或者无法绕过就无法注入,当然还有一些数据库引擎不支持,权限不足等限制,实际工作中遇到的也很比较少,这里就不做过多讨论。

6.Inline queries(内联查询注入)

碰到的比较少,这里暂不做过多讨论。

sqlmap根据6大类型探测技术生成的payload就放在sqlmap源码中\xml\payloads文件中,根据探测技术分为6个后缀为.xml的文件,每个xml文件分别存放每种注入技术的payload。

sqlmap的payloads文件:

文件.png

step1:

首先我们来了解下xml是什么,xml就是可扩展标记语言,标准通用标记语言的子集,简单来说就是sqlmap用xml语言来定义多个不同的标签组成一个payload的模板,每个标签有设置不同的等级,通过这样的方式可以实现灵活组合和调用payload。所以我们就必须先了解sqlmap定义的每个标签的意思和作用。

step2:

标签的意思和作用可以直接通过在sqlmap源码的\xml文件夹中的boundaries.xml文件以及\xml\payloads文件夹下的.xml文件的注释中查看,通过查询xml文件中的注释,我们知道sqlmap上的boundaries.xml定义的<boundary以及payload文件下的xml定义的<test标签均与sqlmap的payload有密切关系。

<boundary定义了sqlmap注入语句的边界问题,包括注入的发包数量等级,使用的查询从句,注入的位置,使用的特殊字符,前缀,后缀等。为我们清晰地划分了sqlmap注入时的所需要的各个模块等级。

登记.png

<test则定义了比较细致完整的测试实例,俗称payload。

pay.png

由上面的<boundary<test相结合我们可以得到如下测试语句。

语句.png

最终的payload = where + boundary.prefix+test.payload+boundary.suffix,影响最终payload的生成主要由<clause,<where标签决定的,当且仅当某个boundary元素的where节点的值包含test元素的子节点where的值,clause节点的值包含test元素的子节点的clause的值时候,该boundary才能和当前的test匹配生成最终的payload。经过测试发现除了这两个文件决定最终payload的生成,还包括sqlmap使用的注入方式以及payload使用的查询语句有关。如果把这两个文件比作两个集合,生成的payload比作两个集合的映射,则这两个集合之间的映射关系是多对多的关系。

关系1.png

guanxi  2.png

#step2.1:

下面我们就具体来这两个文件下,具体每个标签的作用,首先来看 boundaries.xml文件吧,下图所示的是一个完整的<boundary模板里面分别定义了<level,<clause,<where,<ptype,<prefix,<suffix六个标签。

biaoqian.png

<level标签:

Sub-tag: <level
From which level check for this test.
Valid values:
  1: Always (<100 requests)
  2: Try a bit harder (100-200 requests)
  3: Good number of requests (200-500 requests)
  4: Extensive test (500-1000 requests)
  5: You have plenty of time (1000 requests)

<level标签就是我们使用sqlmap注入时候–level的命令,这个标签分别定义了1-5个等级的发包数量,默认是1,表示做最少的检测,level越高,检测的数量越高。level等于2时会检测cookie字段是否有注入,等于3时会检测User-Agent、Host、Referer等HTTP的头部字段是否有注入。

<clause标签:

Sub-tag: <clause
In which clause the payload can work.
NOTE: for instance, there are some payload that do not have to betested as soon as it has been identified whether or not the injection is within a WHERE clause condition.
Valid values:
            0: Always
            1: WHERE / HAVING
            2: GROUP BY
            3: ORDER BY
            4: LIMIT
            5: OFFSET
            6: TOP
            7: Table name
            8: Column name
            9: Pre-WHERE (non-query)
 A comma separated list of these values is also possible.

该标签说明了sqlmap使用的条件从句,其中always表示测试所有

<where标签:

Sub-tag: <where
Where to add our '<prefix <payload<comment <suffix' string.
        Valid values:
            1: When the value of <test's <where is 1.
            2: When the value of <test's <where is 2.
            3: When the value of <test's <where is 3.
      A comma separated list of these values is also possible.

该标签定义了payload写入的位置详见<test的解释

<ptype标签:

    Sub-tag: <ptype
        What is the parameter value type.
        Valid values:
            1: Unescaped numeric #数字型,输入语句中的参数不需要加入
            2: Single quoted string #单引号的字符型
            3: LIKE single quoted string #like+单引号
            4: Double quoted string #双引号
            5: LIKE double quoted string #like+双引号

举个栗子来说:假设如下查询语句?id=1' union SELECT * FROM Persons WHERE City='Beijing'--+其中?id=1后面的单引号是由前缀标签定义的,–+是由后缀标签定义的,而中间语句所要使用的字符则是由<ptype标签定义的,简单来说就是参数的类型。

<prefix标签:

Sub-tag: <prefix
 A string to prepend to the payload.ad.

注入语句的前缀定义了注入中常用到闭合或者注释的字符,例如 右括号),单引号加右括号’),两个右括号))等等。

<suffix标签:

Sub-tag: <suffix
 A string to append to the payload.

顾名思义就是定义了SQL注入的语句的后缀,比如说常见的注释符、也可能是另外的sql语句看具体情况。

#step2.2:

一个完整的test payload模板:部分截图如下

ruxia.png

里面定义了比<boundary更多的标签,同时<test里面也包含了boundary标签的内容

    Sub-tag: <title
        Title of the test..

<title这个没什么好解释的就是每个payload的标题

    Sub-tag: <stype
        SQL injection family type.

        Valid values:
            1: Boolean-based blind SQL injection
            2: Error-based queries SQL injection
            3: Inline queries SQL injection
            4: Stacked queries SQL injection
            5: Time-based blind SQL injection
            6: UNION query SQL injection

<stype说明了每个payload的注入类型,分别就是我们上述所说的6种sqlmap常用的注入类型。

    Sub-tag: <level
        From which level check for this test.

        Valid values:
            1: Always (<100 requests)
            2: Try a bit harder (100-200 requests)
            3: Good number of requests (200-500 requests)
            4: Extensive test (500-1000 requests)
            5: You have plenty of time (1000 requests)

<level为每个payload的发包数量的等级,与boundary中的level的定义一致。

    Sub-tag: <risk
        Likelihood of a payload to damage the data integrity.
        Valid values:
            1: Low risk
            2: Medium risk
            3: High risk

<risk为每个payload的风险等级,等级越高对数据库的造成的破坏越大。

Sub-tag: <clause
In which clause the payload can work.
NOTE: for instance, there are some payload that do not have to be
tested as soon as it has been identified whether or not the
 injection is within a WHERE clause condition.
Valid values:
            0: Always
            1: WHERE / HAVING
            2: GROUP BY
            3: ORDER BY
            4: LIMIT
            5: OFFSET
            6: TOP
            7: Table name
            8: Column name
            9: Pre-WHERE (non-query)
A comma separated list of these values is also possible.

<clause为每个payload使用的sql查询从句与boundary中的clause定义一致。

Sub-tag: <where
Where to add our '<prefix <payload<comment <suffix' string.
Valid values:
1: Append the string to the parameter original value
2: Replace the parameter original value with a negative random
               integer value and append our string
3: Replace the parameter original value with our string

<where为每个payload<prefix <payload<comment <suffix要插入的位置

Sub-tag: <vector
  The payload that will be used to exploit the injection point.

<vectorsql注入模板

    Sub-tag: <request
        What to inject for this test.

<requestsql注入的请求测试

Sub-tag: <payload
            The payload to test for.

<payloadSQL注入的request请求中payload

Sub-tag: <comment
 Comment to append to the payload, before the suffix.

<comment一般在payload之后前缀之前

Sub-tag: <char
Character to use to bruteforce number of columns in UNIONquery SQL injection tests.

<char在union查询时字符串使用的列数

Sub-tag: <columns
Range of columns to test for in UNION query SQL injection tests.

<columnsunion查询时用来判断列数

    Sub-tag: <response
        How to identify if the injected payload succeeded.

<response通过SQL注入的response返回包,一般用来判断注入是否成功,

Sub-tag: <comparison
Perform a request with this string as the payload and compare
the response with the <payload response. Apply the comparison
            algorithm.
NOTE: useful to test for boolean-based blind SQL injections.

<comparison通常用在boolean_blind.xml文件中的布尔盲注用来做比较,判断页面状态

Sub-tag: <grep
Regular expression to grep for in the response body.
NOTE: useful to test for error-based SQL injection.e.

<grep通常用于报错注入的时候判断

Sub-tag: <time
Time in seconds to wait before the response is returned
NOTE: useful to test for time-based blind and stacked queries
SQL injections.

<time时间盲注和堆叠查询使用

Sub-tag: <union
Calls unionTest() function.
NOTE: useful to test for UNION query (inband) SQL injection.

<stype可以注入成功的union语句

Sub-tag: <details
   Which details can be infered if the payload succeed.

<detailssqlmap输出payload的详情,有三个子节点分别是<dbms<dbms_version<dbms_version

Sub-tags: <dbms
 What is the database management system (e.g. MySQL).

<dbms子节点表示数据库类型

Sub-tags: <dbms_version
 What is the database management system version (e.g. 5.0.51).

<dbms_version子节点表示数据库版本

Sub-tags: <os
 What is the database management system underlying operating
system.

<os子节点表示操作系统的类型

step3:

当然sqlmap的注入除了需要payload还有一些其他的xml文件,如下图所示

xiatu.png

想要了解每个标签的作用效果,我们可以通过sqlmap丰富的指令指定使用的xml文件,如果没有指令可以指定xml我们可以手动通过增加、修改、删除xml文件下的元素,来缩小范围,这样我们就能知道每个标签的作用效果。

640.webp.jpg

本文作者:唯念那抹瑞利蓝

今天我们所讲的是GPS欺骗的方式和简单的定义。让大家对GPS欺骗这个方面有所了解。GPS是全世界地一个卫星定位系统,由美国制造。


0×01 例子

2011年伊朗劫持美国无人机 详细见http://news.163.com/11/1217/09/7LFDI7HE00014JB5.html
这种是被新闻称作伊朗的哄骗法

通过对通信进行干扰,迫使这架飞机进入自动驾驶状态,然后给这架无人机发送一个gps信号,从而让它降落

1.jpg

0×02 Why?
很多朋友可能要问Why?为什么GPS能够被欺骗呢?
其实是这样的GPS接受卫星所发送给它的信号,从而让它知道自己现在在哪里,这种传播是由卫星单向传输给GPS接收器的。
如果我们用一个GPS模拟器把自己伪装一下变成卫星,从而发送一个虚假的信号给GPS接收器,那么这个时候接收器会接受到我们GPS 模拟器所发送出的信号而不是卫星的信号。

这是为什么呢?这其实很简单,原因就是我们GPS模拟器所发送的信号比卫星发送的信号强,因为卫星在太空中发送,信号传播经过了很多距离,so信号就当然比我们GPS模拟器所发送的信号要微弱。这样的话我们就构成了一个GPS欺骗。 这个好比wifi一样,谁的信号强,传输速度快,不给钱,安全系数高,我们就用那个的道理一样。      ——————————————————这个就是GPS欺骗的方法

0×03 GPS的安全为什么会那么重要呢?
为什么重要,这个问题很好。想想如果在战场上你方1架轰炸机本想去给敌人的阵营送上一个大大的快递时,中间的GPS定位被欺骗了从而导致目标位置变成了你们家,此时如果飞行员还以为GPS是正确的,相信可以靠他的话,想想后果吧。ps:(您有一个炸弹快递请接受)
你以为GPS欺骗就只能这样了吗?不,不是的。它还可以扰乱我们的定时系统/改变我们的基站/改变授时信息。

0×04 对无人机的欺骗(下面的资料由朋友提供)

2.jpg

很有趣的一张图

这张图的原理是.禁飞区位置欺骗。我们都知道无人机在禁飞区是不能起飞的,即使是到达了禁飞区也会自动降落。

所以我们可以发送一段信号让无人机以为自己在禁飞区从而降落

这种方法也很常用


3.jpg

众所周知,当无人机启动后如果能定位当前的位置就会把它设定为返航点。如果无人机本身没有设定禁飞区的限制,针对返航点的攻击也不失为一种有效的方式。因为当遥控器和无人机失联的时候,无人机会自动朝着返航点飞行,并最终回到返航点。当我们利用伪造的GPS信号欺骗它目前已经处在返航点了,这样无人机就会乖乖地降落了。即使不知道返航点的位置,仍然可以欺骗它当前所处的位置进而改变返航的方向。比如,在无人机展览上进行飞行表演时候,发射一个大功率的北极的GPS信号,那么就会看到“一群无人机往南飞”的“壮观”景象~~


4.jpg

目前有些无人机支持航点飞行,即先在地图上选点,无人机会沿着选定的点飞行。这样的功能同样是基于GPS定位的。当无人机朝着下一个选定的地点飞行的时候被伪造的GPS地点欺骗后,很明显无人机就会背叛飞行的轨迹朝着被欺骗位置和下一个选定点位置连线的方向飞行,直到到达选定点。当无人机自己所在位置都被欺骗了的话,基于GPS的功能都将错乱。如果被欺骗的位置过远的话,那么选定点将很难到达了。

0×05 本篇文章就到这里了,请利用好你们的技能,为网络安全做一个守护者。

作为一个技术党

作为好奇心暴强的人

不搞(zuo)一波岂不是很对不起自己?

a569d044fb9c4f6ab775e64518a4c2e3.gif

GPS相关内容推荐:

1、 HTML5之GPS定位保存【附源码】    

2、源码分享:代码完结一款多用户Gps定位平台   

3、克里姆林宫疑似开启GPS干扰器:当地民众定位异常     

4、时空线索——Hack Key 邂逅 GPS——袁舰、张婉桥   

Hack Key,把它作为一个中间件,接插在键盘和主机之间,就能够实时获取到按键的信息,通过分析这些按键信息能够获取到用户的许多敏感信息,例如帐号、密码等。

>>>>>>  黑客入门必备技能  带你入坑和逗比表哥们一起聊聊黑客的事儿,他们说高精尖的技术比农药都好玩~