符号执行--angr初学分析

0x1,简介

angr在ctf中密码,逆向,以及pwn中都会有涉及,它可以让我们拜托那些头大的算法,单纯知道开始以及结束,暴力破解的方法来得到我们最后的结果,不得不说,在某些方面很方便,但也有局限性,当遇到死循环或者其他中断情况就不太行,而且计算量大时过于费时对于电脑配置也有些要求(我的电脑每次跑都)。

0x2,安装

python的一个模块,自行安装百度,安装过程有点坑。

0x3,实例分析

r100(蓝鲸ctf的一道逆向)

这道逆向本身算法逆向并不难,这里用angr来求解:

64位程序,把丢在ida中分析:

此为加密函数,这里我们不分析他的算法

主函数中有两个分支我们只要他输出'Nice!'就行了

这是正确的地址。

这是错误的地址。

我们需要让他执行到正确的地址附近,并打印出flag。

脚本如下:

 

import angr # 导入angr库

p=angr.Project('./r100',auto_load_libs=False) # 加载程序

state=p.factory.entry_state() # 创建一个状态,默认为程序的入口地址

simgr=p.factory.simgr(state) # 创建一个模拟器用来模拟程序执行,遍历所有路径

res=simgr.explore(find=0x400844,avoid=0x400855) # 约束执行的流程,0x400844为打印正确,0x400855附近即为打印错误的地址

print (res.found[0].posix.dumps(3)) # 打印found的第一个结果

 

 密码时code_Talkers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值