如果程序 有 pie
我们不能找到 随机地址 就可以利用条件判断来得到
sm.explore(find=is_good, avoid=is_bad)
find和avoid指向我们给定条件
条件利用 返回值 state.posix.dumps(1)
回显
# -*- encoding: utf-8 -*-
from __future__ import print_function
'''
@文件 :angr_exp.py
@时间 :2020/04/22 22:25:42
@作者 :0xc4m3l
'''
import angr
import sys
def main(argv):
bin_path = argv[1]
p = angr.Project(bin_path)
init_state = p.factory.entry_state()
sm = p.factory.simulation_manager(init_state)
def is_good(state):
return b'Good Job' in state.posix.dumps(1)
def is_bad(state):
return b'Try again' in state.posix.dumps(1)
sm.explore(find=is_good, avoid=is_bad) # 指向给定条件
if sm.found:
found_state = sm.found[0]
print("Solution: {}".format(found_state.posix.dumps(0)))
if __name__ == "__main__":
main(sys.argv)