漏洞挖掘
文章平均质量分 74
FunctionY
学生
展开
-
Android端口漏洞挖掘记录
本次还是针对端口开放漏洞进行挖掘。首先访问端口,查看返回信息,使用jeb工具查找返回信息所在代码,从代码逆向回去。其中最为重要的是要先了解这个app开放端口的原因,为了达到这一目的,有以下几种方法:首先看其是否利用了常用框架如nanohttp,或者jetty。这些框架可以帮助我们很快的找到关键代码的位置,如对端口数据的处理,以及过滤规则。(如果这个地方发现指令就最好了,否则进行下一步)原创 2016-10-15 10:14:36 · 1604 阅读 · 0 评论 -
angr符号执行用例解析——defcamp_r100
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/defcamp_r100这道题非常非常简答啦!就是要求输入一个password,check一下是否正确。check函数逻辑:signed __int64 __fastcall sub_4006FD(__int64 a1){ signed int i; // ...原创 2018-04-17 10:45:26 · 889 阅读 · 0 评论 -
angr符号执行用例解析——defcon2016quals_baby-re
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/defcon2016quals_baby-re执行二进制文件,发现需要输入13个字符,然后通过一系列计算判断输入字符是否满足约束条件。在IDA里非常清晰可以看见输入错误的字符串及其调用地址:所以avoid_addr=0x402941而正确的字符串以及地址为:可以看...原创 2018-04-17 18:42:43 · 2074 阅读 · 0 评论 -
angr符号执行用例解析——asisctffinals2015_license
源码及二进制文件链接: https://github.com/angr/angr-doc/tree/master/examples/asisctffinals2015_license分析题目:运行二进制文件,输出:key file not found!看来该二进制需要读取一个文件,拖到IDA里看它需要读取的文件路径及名称是什么。找到以后发现是:"_a\nb\tc_"。那创建一个名为"_a\nb\t...原创 2018-04-12 15:51:08 · 627 阅读 · 0 评论 -
angr源码分析——BackwardSlice
BackwardSlice 程序反向切片,从给出的某一个目标点,获取所有到达该目标点的路径。angr的这个功能似乎并不完善,里面可以自己进行定制。在进行程序切片前,我们需要提供一个控制流图CFG。此外,为了确定程序反向的起始点,还需要提供一个target。下面是angr文档中给出的一个例子:>>> import angr# Load the project>>&g...原创 2018-05-10 14:05:22 · 2638 阅读 · 0 评论 -
angr源码分析——CFGAccurate and Function Manager
angr的控制流图恢复可以分为两种,一种是CFGAccurate,一种是CFGFast。关于它们的介绍,在我以前的一篇《自动化二进制分析技术》中有所提及,为了方便代码的理解,我把这部分内容再次放在本文的后面了。所以,如果你对控制流恢复一窍不通的话,可以跳到最后 控制流图恢复 部分先了解理论。angr通过执行每一个基本块并观察基本块的执行流向来构造CFG。然而,在不同的上下文中基本块的流向将不同。如...原创 2018-05-06 19:37:52 · 3074 阅读 · 18 评论 -
angr源码分析——DFG 数据流图
这篇文章主要讲述,angr中数据流图(Data Flow Gragh)的构建。DFG恢复的是CFG中每个基本块的数据流!DFG为CFG的每个基本块构建一个数据流图(DFG)DFG可以通过字典self.dfgs获得,其中key的值为基本块的地址,或DFG中的值。param CFG:用于获得所有基本块的CFGparam annocfg:一个由向后片构建的注释cfg,用于在白名单上构建DFG。构造函数:...原创 2018-05-21 15:37:55 · 4666 阅读 · 4 评论 -
angr源码分析——CFGFast 快速构建控制流图
有时我们需要对一个二进制文件做一个全面的分析,然而使用CFGAccurate一般都需要提供一个start_state作为起始的状态点进行分析,这就导致分析并不全面。为了获得一个高代码覆盖率的CFG,我们可以使用CFGFast。下面分析一下CFGFast的源码,了解其恢复原理,然后进行自己的改进吧。CFGFast在给定的二进制文件中识别函数,并以非常快的方式构建一个控制流图:与CFGAccurate...原创 2018-06-11 11:27:40 · 3710 阅读 · 0 评论 -
angr源码分析——数据依赖图 DDG
由于官方文档中关于数据依赖图(DDG)的说明少之又少,所以这是一篇对angr构造数据依赖图由浅入深的分析博客。下面就开始吧。DDG的使用案例:#先加载一个二进制文件,选择符号分析模式proj = angr.Project(binary_path,load_options={'auto_load_libs': False},default_analysis_mode='symbolic')#利用...原创 2018-06-13 19:12:47 · 3245 阅读 · 1 评论 -
angr源码分析——库函数识别identify
在识别代码的同源性时,多数情况下采用的方法是依赖于代码本身的数据特征例如Flirt技术的前32位字节码,函数crc;diaphora的fuzzing hash等。而在二进制代码中,不同的编译环境或库版本都会对最终生成的库函数的代码带来巨大的变化,导致依赖于数据特征的库函数识别技术识别率极低,或者干脆无用。那么此时为了识别一个函数我们需要依赖的就是函数的语义。函数语义代表这个函数做了什么,而不是...原创 2018-08-09 11:28:19 · 2903 阅读 · 1 评论 -
angr源码分析——自定义Exploration Technology
exploration Technology允许我们制定任何符号执行的规则,例如程序从哪里开始,到哪里结束,执行时的过滤规则,结束后的处理逻辑。先让我们看一下父类的结构,了解每一个方法的作用。class ExplorationTechnique(object): """ An otiegnqwvk is a set of hooks for a simulation ma...原创 2018-08-21 13:12:17 · 537 阅读 · 0 评论 -
Ubuntu16.04建立wifi热点
安装网卡驱动为了拦截数据,我需要在Ubuntu上建立热点Hotspot。首先我的无线网卡的是tplink 802.11n 对应的驱动是:rtl8192eu。Ubuntu16.04下默认带有rtl8xxxu网卡驱动,它允许你上网,但是它没有Hotspot模式因此我们是无法使用它建立热点的。因此,首先要安装rtl8192eu网卡驱动。Realtek很多新版的驱动都是仅支持Windows系统而...原创 2018-11-14 17:26:35 · 3154 阅读 · 0 评论 -
mitmproxy - 环境配置-安装-实例
初探 mitmproxy是一个开源免费的HTTPS代理工具。它有三个使用接口:command line(命令行),web interface(web接口),Python API(Python编程接口)。它可以用于拦截、检查、修改和重放web流量,例如HTTP/1、HTTP/2、WebSockets或任何其他SSL/ TLS保护协议。它可以帮助我们对从HTML到Protobuf的各...原创 2018-11-14 18:42:42 · 3967 阅读 · 0 评论 -
angr符号执行用例解析——CSCI-4968-MBE
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/CSCI-4968-MBE/challenges本次用例代码压轴的crackme0x05非常棒,前面比较简单可以跳过去。crackme0x00a这个就是一贯的套路了,确定start_addr,find_addr, avoid_addr,然后创建simulation...原创 2018-04-17 10:21:29 · 1982 阅读 · 0 评论 -
angr符号执行用例解析——csaw_wyvern
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/csaw_wyvern这是一个恐怖的世界,一条恶龙在这片领域盘旋。当然,这也是属于勇士的世界,力量和坚持是我们唯一的希望!为了打败这条恶龙,我们要了解它的弱点,所以把它拖进IDA里分析一下。这是一个C++的二进制文件,用到了较多的C++库函数。执行二进制文件后,发...原创 2018-04-17 09:11:32 · 1505 阅读 · 0 评论 -
Android逆向-记录某密码管理APP的设计逻辑
现在注册的账号特别多,但是为了安全起见又不能把每个账号的密码都设置的一样,不然泄露了一个,其他账号也会沦陷。所以,出现了很多帮助我们记录账号和密码的软件,而且通常需要一个主秘钥来加密解密这些账号和密码。这一次逆向经历是源于我把主秘钥忘记了,希望逆向找到主密钥存储位置。该APK非常小,不超过3m;使用的工具还是JEB225。首先找到应用入口。因为APP进入主页面后,会要求先输入主密钥,所原创 2017-10-25 17:20:30 · 995 阅读 · 0 评论 -
angr源码分析——claripy ,factory
claripy是一个符号求解引擎,大多数时候,我们只是简单使用claripy,然而当我们做一些核心的符号执行分析时,则不得不深入claripy api,了解其实现细节及处理逻辑,从而进行改进。就我目前对符号执行的理解而言,在使用符号执行解决问题时,首先要提供符号变量,然后提供求解路径,提供求解器,最终求解出结果。那么在angr中如何定义以及初始化这些参数和变量的呢?这是此次源码分析要解决的一个问题...原创 2018-02-25 21:26:18 · 3390 阅读 · 0 评论 -
angr源码分析——Simulation Manager
angr中符号执行涉及的代码比较多,前面已经介绍了符号执行中获取程序状态的类factory,以及状态对象SimState涉及到的属性,方法,插件,下面将介绍关于符号执行路径探索的主要对象Simulation Manager。代码位于:angr/angr/manager.pyangr.manager.SimulationManager(project, active_states=None, sta...原创 2018-03-07 13:43:55 · 1713 阅读 · 0 评论 -
angr源码分析——SimState
在最初分析angr的符号执行流程时,我们首先介绍了angr中claripy的应用代码,如下:import angr, claripy b = angr.Project('/bin/true') path = b.factory.path() rax_start = claripy.BVS('rax_start', 64) path.state.regs.rax = rax_star...原创 2018-02-27 23:29:51 · 1644 阅读 · 0 评论 -
angr源码分析——angr.Project类
使用angr时,第一行语句就是:b = angr.Project('path/bin_file_name')该代码调用的为Project类的构造函数_init_()。Project类是angr模块的主类,它对一个二进制文件进行初始的分析以及参数配置,并将数据存储起来进行后续进一步分析。构造函数参数:angr.project.Project(thing, default_analysis_mode=...原创 2018-02-19 11:27:08 · 2135 阅读 · 0 评论 -
angr源码分析——cle.Loader类
上篇文章分析angr.Project类时说到,angr工具第一步就是将二进制文件加载到cle.loader类里。(CLE means Loading Everything)。loader类加载所有的对象并导出一个进程内存的抽象。生成该程序已加载和准备运行的地址空间。构造函数参数:cle.loader.Loader(main_binary, auto_load_libs=True, force_lo...原创 2018-02-23 22:09:01 · 2469 阅读 · 0 评论 -
angr源码分析——Simulation Engines
为什么研究这个类呢?原因是在对程序进行模拟执行时,step()调用的实际上就是project.factory.successors()函数,而这个函数代码为 def successors(self, *args, **kwargs): """ Perform execution using any applicable engine. Enumerate th...原创 2018-03-12 13:49:20 · 1159 阅读 · 0 评论 -
angr符号执行用例解析——CADET_00001
源码及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/CADET_00001CADET_00001是DARPA为网络大挑战赛发布的挑战之一,链接:https://github.com/CyberGrandChallenge/samples/tree/master/examples/CADET_00001二进制文件可以在DE...原创 2018-04-01 10:52:18 · 1606 阅读 · 2 评论 -
angr符号执行用例解析——ais3_crackme
源码及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/ais3_crackme这次的用例非常简单,也非常基础(也是唯一一个,我自己能做出来的)。执行这个二进制文件 ./ais3_crackme输出: You need to enter the secret key!看来需要参数,随便输入个123: ./ais3_crack...原创 2018-04-09 20:38:41 · 1782 阅读 · 0 评论 -
angr符号执行用例解析——asisctffinals2015_fake
源码及二进制文件链接: https://github.com/angr/angr-doc/tree/master/examples/asisctffinals2015_fake首先拿到这个文件,还是先执行分析一下。输入一个长整型,输出长整型经过一系列计算后的转化为字符串的结果。这道题有点脑洞大开,但是也不是很难。其实就是希望我们输入一个长整数,使得输出为我们需要的flag。这道题的前提是,已知fl...原创 2018-04-09 21:20:35 · 1156 阅读 · 0 评论 -
angr符号执行用例解析——cmu_binary_bomb
解题源码以及二进制文件在:https://github.com/angr/angr-doc/tree/master/examples/cmu_binary_bomb一道有趣的题目!首先运行bomb文件,随便输入个字符串,bomb! 炸了!总共有6关要闯,每次只要输入满足要求的数据才能进入下一关,否则就爆炸。拖到IDA里面分析,发现第一关的字符串比较还蛮简单,下面几关就需要计算了。int __fas...原创 2018-04-16 15:53:21 · 2492 阅读 · 0 评论 -
angr符号执行用例解析——codegate_2017-angrybird
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/codegate_2017-angrybird这个二进制文件执行起来没反应,给参数也不可以。看了用例源码,才知道这个二进制文件很怪,加了“anti-run instructions”(嗯,反运行指令)。除非更改二进制文件,删除掉反运行指令或直接跳转到正确代码块才可...原创 2018-04-16 19:11:01 · 1295 阅读 · 0 评论 -
Passwords in the Air: Harvesting Wi-Fi Credentials from SmartCfg Provisioning
smartconfig介绍smartconfig是用来给物联网设备配网的,一般通过移动APP发送广播包,将wifi的凭证包括ssid和password按照一定规则编码在广播包(802.11)中。设备嗅探到广播包后进行解码,获取ssid和password。值得注意的是,编码时,有效信息并不一定是编码在数据包的内容中,而是与数据包的长度有关。因此,抓包时可以看见超级多不同长度的广播包,这些包的长度...翻译 2018-11-15 11:28:24 · 230 阅读 · 0 评论