본문 바로가기

CTF

[Codegate 2017] angrybird

메인 함수에서 exit함수를 호출하지 않도록 수정해줘야 한다. 어셈으로 보자


cmp eax, 0 부분을 cmp eax, 1로 바꿔주면 된다.


보면 이런 코드가 대략 2천줄 정도 있는데 z3 아니면 angr로 풀라는 소리같다.

z3으로 풀면 너무 시간이 오래 걸리기 때문에 angr를 사용했다.

그전에 수정해야 할 것이 있다.

먼저 sub_40072A() 함수는 그냥 nop 처리 해주고 


sub_4006f6 에서 dword_606060 값을 리턴하는데 이게 fgets의 입력 size가 된다.

이 부분이 현재 1이므로 21(0x15)로 바꿔주어야 한다.


이런식으로 fgets 인자값중 size 인자를 변수 n 대신에 0x15로 바꿔주면 된다.

이제 파일을 저장한 후 angr 돌리면 된다.

 

[Solve]

1
2
3
4
5
6
7
8
9
import angr
= angr.Project("./angrybird")
path_group = p.factory.simgr()
path_group.explore(find=0x404fab, avoid=0x4005e0)
 
 
print path_group.found[0].state.posix.dumps(0)
#Im_so_cute&pretty_:)
 
cs


'CTF' 카테고리의 다른 글

[AceBear Security Contest] secure login  (0) 2018.02.02
[Codegate 2017] EasyCrack 101  (1) 2018.01.30
[SECCON 2017] JPEG file  (0) 2018.01.20
[Defcon 2016] Baby-re  (0) 2018.01.18
[CSAW CTF 2017] tableEZ  (0) 2018.01.16