Angr实例分析——fauxware

本博客由闲散白帽子胖胖鹏鹏胖胖鹏潜力所写,仅仅作为个人技术交流分享,不得用做商业用途。转载请注明出处,未经许可禁止将本博客内所有内容转载、商用。

      在阅读Angr的gitbook的时候,作者超喜欢用fauxware举例,同时也是因为fauxware比较简单,我们由浅入深,逐步学习Angr的使用。代码位置在https://github.com/angr/angr-doc/tree/master/examples/fauxware

0x00 开发环境的搭建

      这里扯点和分析无关的内容。我在开发的时候,最开始使用的是Angr提供的docker,开始没觉得有啥不爽,后来自己写代码之后发现,docker里面没有IDE呀,我写代码的时候不能自动补全,简直煎熬。于是乎重新装了一个ubuntu14.04系统,可是再运行就出现segmentation fault。查看issue发现是32位的锅。只好换到Ubuntu 16.04 64位。我这里说下安装过程,和官方的不太一样。

首先安装依赖库

sudo apt-get install git python-dev libffi-dev build-essential

再clone一下angr-dev

git clone https://github.com/angr/angr-dev
cd angr-dev
./setup.sh -i -e angr

在这之后,setup脚本会为我们自动创建angr这个虚拟环境,但是此时我们还不能直接使用workon进入,因为还没有增加环境变量。

gedit .bashrc
#在末尾添加一行
export WORKON_HOME=$HOME/.virtualenvs

这样再使用workon angr就能够进入angr的虚拟环境了。接下来祭出我最喜欢的VSCode编辑器!需要注意的是,因为VSCode默认使用的是python默认环境,我们需要设置一下进入我们虚拟的angr环境。打开一个工程,点击setting,搜索"python.pythonPath",将这个属性更改为 

"python.pythonPath":"$your_HOME/.virtualenvs/angr/bin/python"

如图所示。


0x01 开始分析

      官方的例子里面提供了源码,很简单,我不进行详细分析了。主要功能就是接受用户输入的用username和password,验证文件名为usernmae的文件里面存的内容和password相不相同。当然这里留了一个后门,如果输入密码为"SOSNEAKY"的话,直接验证成功。我们这次就是要找到这个后门。

      进行分析的代码如下:

import angr

def basic_symbolic_execution():
    p = angr.Project('fauxware')
    state = p.factory.entry_state()
    sm = p.factory.simulation_manager(state)

    def success_auth(state):
        try:
            return 'Welcome' in state.posix.dumps(1)
        except:
            return False
    def failed_auth(state):
        try:
            return 'Go' in state.posix.dumps(1)
        except:
            return False 
    sm.explore(find=success_auth, avoid=failed_auth)
    return sm.found[0].posix.dumps(0)

if __name__ == '__main__':
    print basic_symbolic_execution()
      解法和上一篇实例分析一样,都是判断两个状态的输出字符串,然后选择成功的那个状态,求解得到其输入内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值