angr符号执行用例解析——defcamp_r100

4人阅读 评论(0) 收藏 举报
分类:

用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/defcamp_r100

这道题非常非常简答啦!

就是要求输入一个password,check一下是否正确。

check函数逻辑:

signed __int64 __fastcall sub_4006FD(__int64 a1)
{
  signed int i; // [sp+14h] [bp-24h]@1
  const char *v3; // [sp+18h] [bp-20h]@1
  const char *v4; // [sp+20h] [bp-18h]@1
  const char *v5; // [sp+28h] [bp-10h]@1

  v3 = "Dufhbmf"; 
  v4 = "pG`imos";
  v5 = "ewUglpt";
  for ( i = 0; i <= 11; ++i )
  {
    if ( (&v3)[8 * (i % 3)][2 * (i / 3)] - *(_BYTE *)(i + a1) != 1 )
      return 1LL;
  }
  return 0LL;
}

所以只要找find_addr和avoid_addr,或者编写一个correct函数和一个wrong函数,过滤出满足条件的path就可以了。

用例源码:

find_addr  avoid_addr

import angr

def main():
    p = angr.Project("r100", load_options={'auto_load_libs': False})
    ex = p.surveyors.Explorer(find=(0x400844, ), avoid=(0x400855,))
    ex.run()

    return ex.found[0].posix.dumps(0).strip('\0\n')

def test():
    assert main() == 'Code_Talkers'

if __name__ == '__main__':
    print main()

correct函数  wrong函数

import angr

def main():
    def correct(state):
        if 'Nice' in state.posix.dumps(1):
            return True
        else: 
            return False
    def wrong(state):
        if 'Incorrect password' in state.posix.dumps(1):
            return True
        else: 
            return False
    p = angr.Project("r100", load_options={'auto_load_libs': False})
    ex = p.surveyors.Explorer(find=correct, avoid=wrong)
    ex.run()

    return ex.found[0].posix.dumps(0).strip('\0\n')

def test():
    assert main() == 'Code_Talkers'

if __name__ == '__main__':
    print main()


查看评论

用符号执行技术搞定crackme

Kao的toy project是一个非常棒的crackme,非常适合展示符号执行的力量。运行crackme提供了一个安装ID,我们需要输入一个解锁代码。 这里的安装ID本来应该是XXXXXXXX...
  • qq_32400847
  • qq_32400847
  • 2017-06-11 13:46:04
  • 1188

符号执行工具angr安装教程

符号执行工具angr的安装教程
  • xiaosatianyu
  • xiaosatianyu
  • 2016-06-04 22:19:55
  • 5732

angr符号执行用例解析——0ctf_trace

在这个用例中,给出了一个带有程序执行的trace的text文件。这个文件有两列,地址和执行指令。所以我们知道所有的执行的指令和分支,但是我们不知道初始数据。通过逆向,我们发现在栈上有一段缓冲区最先由已...
  • doudoudouzoule
  • doudoudouzoule
  • 2018-03-14 10:29:45
  • 128

符号执行

https://www.zhihu.com/question/38727250 https://github.com/saswatanand/symexbib 首先随便找个开源...
  • cnbird2008
  • cnbird2008
  • 2017-02-20 20:10:59
  • 1890

angr符号执行用例解析——CADET_00001

源码及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/CADET_00001CADET_00001是DARPA为网络大挑战赛...
  • doudoudouzoule
  • doudoudouzoule
  • 2018-04-01 10:52:18
  • 39

angr符号执行用例解析——defcon2016quals_baby-re

用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/defcon2016quals_baby-re执行二进制文件,发...
  • doudoudouzoule
  • doudoudouzoule
  • 2018-04-17 18:42:43
  • 20

angr源码分析——claripy ,factory

claripy是一个符号求解引擎,大多数时候,我们只是简单使用claripy,然而当我们做一些核心的符号执行分析时,则不得不深入claripy api,了解其实现细节及处理逻辑,从而进行改进。就我目前...
  • doudoudouzoule
  • doudoudouzoule
  • 2018-02-25 21:26:18
  • 93

angr符号执行用例解析——csaw_wyvern

用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/csaw_wyvern这是一个恐怖的世界,一条恶龙在这片领域盘旋...
  • doudoudouzoule
  • doudoudouzoule
  • 2018-04-17 09:11:32
  • 6

angr符号执行用例解析——asisctffinals2015_license

源码及二进制文件链接: https://github.com/angr/angr-doc/tree/master/examples/asisctffinals2015_license分析题目:运行二进...
  • doudoudouzoule
  • doudoudouzoule
  • 2018-04-12 15:51:08
  • 5
    个人资料
    持之以恒
    等级:
    访问量: 5208
    积分: 578
    排名: 9万+