본문 바로가기

CTF/Write-up

codegate 2017 angrybird

이 문제는 z3아님 angr를 쓰라고 만들어놓은거같다.

바이너리를 열어보면 exit()함수가 맞이해준다.


우선 바이너리를 수정해서 헥스레이를 사용할 수 있게 하자

exit 함수위에 cmp eax, 1로 수정해주고

밑에 call 3개를 nop 처리한다.


이렇게 수정하면 fgets 두번 째 인자가 제대로 안되서 또 다시 수정해준다.


수정 전


수정 후

이런식으로 nop처리한다.

바이너리를 수정했으면 ida에서 이렇게 보인다.

이제 fgets도 작동을 하니 angr를 통해 플래그를 얻어보자

1
2
3
4
5
6
import angr
proj = angr.Project("./test", load_options={'auto_load_libs':False})
path_group = proj.factory.path_group(threads=4)
path_group.explore(find=0x404fda, avoid=0x404f97)
print path_group.found[0].state.posix.dumps(0)
 
cs


'CTF > Write-up' 카테고리의 다른 글

BSidesSF-pinlock  (0) 2017.02.20
BSidesSF Reversing  (0) 2017.02.14
codegate 2017 angrybird  (2) 2017.02.11
AlexCTF Reverse Engineering  (0) 2017.02.06
BITSCTF Riskv and Reward  (0) 2017.02.05
insomnihack CTF bender_safe  (0) 2017.01.22