angr 사용법을 물어보는 아주 기초적인 문제


Codegate 2017 angrybird

z3로도 풀수있지만 angr가 더 편하므로 angr를 사용하겠습니다


보기만 해도 토나오는 그래프 모양이군요... 마지막 것을 봅시다.

printf 뒤쪽으로 목적지를 설정하면 오류가 가끔 발생하므로 print 바로 앞쪽위치를 목적지로 설정하겠습니다.


import angr

START_ADDR = 0x4007c2
FIND_ADDR = 0x404fab

def main():
        proj = angr.Project('angrybird')
        state = proj.factory.entry_state(addr=START_ADDR)
        sm = proj.factory.simulation_manager(state)
        sm.explore(find=FIND_ADDR)
        print(sm)

        found = sm.found[-1]
        print(found)
        flag = found.posix.dumps(0)
        print(flag)

        return flag

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

실행시키면 플래그가 나옵니다.



'리버싱 관련' 카테고리의 다른 글

angr사용법(1)  (0) 2018.04.23
codegate2018 final shall we dance? writeup  (4) 2018.04.08
facebook Video_XXXX.mp4 분석  (0) 2017.12.20
Codegate 2017 HelloProtector 풀이  (0) 2017.12.13
DEFCON 2016 baby-re 풀이  (0) 2017.12.10

WRITTEN BY
Dukup11ch1
무근본, 실력 0, 아는척하기위한 블로그. 저는 귀엽습니다

,