티스토리 뷰

programming/python

angr 정리

ba0bab 2018. 7. 7. 06:42
import angr 
 

 
def main():
    proj = angr.Project('./바이너리이름', load_options={"auto_load_libs"False}) # False써라.
    path_group = proj.factory.path_group()
    path_group.explore(find=FIND_ADDR, avoid=AVOID_ADDR) # find 목적 address , avoid 피할 address
    return path_group.found[0].state.posix.dumps(0).split('\0')[0# stdin
 
if __name__ == '__main__':
    print(main())


argv를 이용하는 바이너리

->


import angr

import claripy


proj = angr.Project('./파일이름', load_options={"auto_load_libs": False})

argv1 = claripy.BVS("argv1", 0xff * 8)  # 0xff는 argv에서 사용하는 길이 byte

initial_state = proj.factory.entry_state(args=["./argvflag", argv1]) # 인자


initial_state.add_constraints(argv1.chop(8)[0] == 'A')  #문자를 지정할 수도 있음 



initial_path = proj.factory.path(initial_state)

path_group = proj.factory.path_group(initial_state)

path_group.explore(find=0x) #find 주소

print(path_group.found[0].state.se.any_str(argv1)) #argv 출력

'programming > python' 카테고리의 다른 글

[Flask] hello.py  (0) 2018.08.23
python image library  (0) 2018.08.10
z3 정리  (0) 2018.07.07
파이썬 BeautifulSoup를 이용해 네이버 실시간 검색어 웹 크롤러 만들기  (0) 2018.03.05
파이썬 requests 모듈 기본  (0) 2018.03.05
Comments