Reversing

2015 defcamp r100

ExploitSori 2018. 2. 22. 03:18

앵거로 푸는 문제중에서 가장 쉽다고 들은 15년도 defcamp 리버싱 100점 짜리이다.

바이너리를 열어보면 복잡하게 루틴이 있다.

하지만 우리는 angr를 사용을 하기 때문에 찾을 주소와 피할 주소만 찾아주면 된다.


.text:0000000000400842                 jnz     short loc_400855

.text:0000000000400844                 mov     edi, offset s   ; "Nice!"      <<<<<<<<< 찾을 주소

.text:0000000000400849                 call    _puts

.text:000000000040084E                 mov     eax, 0

.text:0000000000400853                 jmp     short loc_40086B

.text:0000000000400855 ; ---------------------------------------------------------------------------

.text:0000000000400855

.text:0000000000400855 loc_400855:                             ; CODE XREF: main+5Aj

.text:0000000000400855                 mov     edi, offset aIncorrectPassw ; "Incorrect password!"  <<<< 피할주소

.text:000000000040085A                 call    _puts

.text:000000000040085F                 mov     eax, 1

.text:0000000000400864                 jmp     short loc_40086B

.text:0000000000400866 ; ---------------------------------------------------------------------------


import angr

project = angr.Project("./r100.bin", load_options={'auto_load_libs':False})#파일 불러오기
ex = project.surveyors.Explorer(find=(0x400844,), avoid=(0x400855,))#찾을주소 400844, 피할주소 400855
ex.run()#실행
print ex.found[0].state.posix.dumps(0) #찾고 posix.dump값



(angr) root@ubuntu:~/defcon# pypy x.py

WARNING | 2018-02-21 09:56:40,251 | angr.analyses.disassembly_utils | Your verison of capstone does not support MIPS instruction groups.

Code_Talkers