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, 아는척하기위한 블로그. 저는 귀엽습니다
,