JobPlus知识库 IT 大数据 文章
Angr实例分析——fauxware

0x00 开发环境的搭建

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

首先安装依赖库

[plain]

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

再clone一下angr-dev

[plain] 

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

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

[plain] 

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

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

[plain] 

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

如图所示。

0x01 开始分析

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

      进行分析的代码如下:

[python]

  1. import angr  
  2.   
  3. def basic_symbolic_execution():  
  4.     p = angr.Project('fauxware')  
  5.     state = p.factory.entry_state()  
  6.     sm = p.factory.simulation_manager(state)  
  7.   
  8.     def success_auth(state):  
  9.         try:  
  10.             return 'Welcome' in state.posix.dumps(1)  
  11.         except:  
  12.             return False  
  13.     def failed_auth(state):  
  14.         try:  
  15.             return 'Go' in state.posix.dumps(1)  
  16.         except:  
  17.             return False   
  18.     sm.explore(find=success_auth, avoid=failed_auth)  
  19.     return sm.found[0].posix.dumps(0)  
  20.   
  21. if __name__ == '__main__':  
  22.     print basic_symbolic_execution()  

      解法和上一篇实例分析一样,都是判断两个状态的输出字符串,然后选择成功的那个状态,求解得到其输入内容。


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
214人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序