CTF
-
WITHCON Finals - BPTime routerCTF 2016. 10. 25. 03:54
MIPS 공유기문제이다. 1. MIPS 리버싱2. Command Injection 1번의 MIPS 리버싱을 통해 어떻게 하면 커맨드인젝션 루틴으로 갈 수 있는지, 어떻게하면 패스워드를 구할 수 있는지를 분석하면 된다.그다음 2번을 통해 ping -c 65535 %s가 되어있는데, 어떻게하면 패킷을 65535번 보내지않고 공격에 성공 할 수 있는지 보면된다. 1번이 오래걸리고 2번은 순식간에 슥삭했다! lan_ipaddr등은 파일로 구성되어있다. nvram_get은 그 파일에서 값을 가져오는 역할을 한다. 보면, 0xE0+dest에 lan_ipaddr 값을 담는데, snrpintf 인자를보면 %s에 그값을 넣어주게된다. 디폴트 설정으론 lan_ipaddr이 192.168.0.50으로 되어있다. 그리고 sy..
-
[BCTF] BCloudCTF 2016. 10. 23. 19:41
힙 관련 문제를 풀어보려다가 우연히 BCTF 의 Bcloud문제를 알게되었다 이 문제는 hof의 기본을 다루는 문제인데, 힙 베이스를 릭하는것과 탑청크 위치까지 계산하는건 쉬웠지만 라이브러리 릭에서 애를 먹었다.(libc leak은 writeup을 참고했다 ㅠㅠ) 처음 호출하는 메뉴에선 NAME과 HOST와 ORG를 받는데, 여기서 heap base leak이 가능하고, HOF를 유발할수있다. s를 64바이트만큼 받는다. 하지만 v2를 malloc을 통해 64바이트만큼 할당한다. strcpy를 통해 name을 v2에 널바이트없이 넣어주게되는데, 이렇게되면 heap 을 leak할수가 있다. 바로 뒤에 힙주소가 있다. printf로 그냥 출력해버리기때문에 heap을 leak 할 수 있고, 이 릭을통해 우리는..
-
[DEFCON 2014] Babyfirst heapCTF 2016. 10. 20. 04:32
코드는 randrange 함수를통해 무작위로 malloc을 시키지만, 10번의 루프를 돌고나선 size가 260으로 멈춘다. 260으로 할당될때의 주소를 가져와서 PREV_INUSE의 비트를 바꿔주고 free시키면 chunk 병합을 끊을 수 있다. (붙어있는 chunk가 연속으로 두번 free시에 chunk가 병합되는 특징이 있다)fake chunk로, fd와 bk를 이용하여 overwrite 할 수 있는 문제이다. Double Free Bug의 문제임. 루프문을 통해 free를 계속해서 하기때문에 DFB가 일어난다. 맨 마지막에 호출되는 exit_func나 printf나 free중 하나를 overwrite하면된다.( free는 plt가 아닌 사용자정의함수임 ) + NX가 있지만 mprotect로 mal..
-
WITHCON - malloc (double free bug)CTF 2016. 10. 10. 01:15
malloc 문제는 Double Free Bug에 관한 문제이다. Double Free Bug는 free 함수를 호출하되 하나의 청크에 대해 두 번 해제할 시 발생한다. ( 라이브러리가 2.3.2버전 이하에서만 터짐 ) 메인함수는 별거없다. 중요한것은 1번과 2번, 4번이 버그를 발생시킬수있는 각각의 함수이다. 사이즈를 입력하고, 데이터를 받는 구조이다. 사이즈는 32바이트까지만 할당이 가능하고, 입력 버퍼역시 32바이트만 주어진다. 해당 조건이 있어 fastbin이 가능해진다. 2번 메뉴는 할당해주는 힙을 free해주는 곳이다. 또 4번 메뉴는 할당해준 힙을 수정하는 메뉴이다. 만약, malloc을 해준 후에 free를하면 fastbin의 특성상 첫번째할당된힙에 Chunk Pointer가 작성된다. 다..
-
h4ck1t - Capture AngolaCTF 2016. 10. 3. 15:55
s variable에서 오버플로우가 발생한다. v10조건은 0x41414142가되어야하는데, s변수에서 0x76을 덮어주면 도달할수있다. 1234567891011121314from pwn import * p = remote("ctf.com.ua",9011)tomorrow = "tomorrow"payload = "AAAB"*69print p.recvuntil("Yesterday you said")p.sendline("tomorrow" + payload)print p.recvuntil("Some people dream of")p.sendline("success")print p.recvuntil("You should get to the")p.sendline("point") p.interactive() Colo..
-
CSAW 2016 - Clams Don't DanceCTF 2016. 9. 19. 06:25
이 문제는 포렌식문제다. img파일을 주게되는데, FTK로 열면 ppt가 나오게된다. 여기서 부터 분석을 하면됨! clam.pptx가 존재한다. pptx를 export하고 압축을 풀어보자 ppt라는 directory가 존재한다. ppt의 구성요소들이 모여있는데 한번 들어가보도록하자 media 디렉터리로 들어가보면, 이러한 사진들이 존재한다. 첫번째 사진이 수상해서 검색을 해보았는데, Data Matrix 라는것이였다. Data Matrix online decoder를 검색해서 이미지를 넣으면 플래그가나온다
-
CSAW 2016 - tutorialCTF 2016. 9. 18. 07:43
LeaveCat - pwn200(tutorial) it's just 64bit ROP [Technic] - Memory Leak( Leak Canary ) - 64bit ROP 우선, binary와 library 파일이 주어진다. 바이너리분석, 라이브러리는 오프셋계산과 가젯을 구하는데 사용된다. 전형적인 소켓을 여는 바이너리이다. dlsym함수를통해 puts 라이브러리 주소를 출력해준다. 이 함수를 이용해 puts의 라이브러리주소를 얻어온후, 제공된 라이브러리로 오프셋을 계산해 이미지베이스를 토대로 시스템함수를 구하고, 여러가지 가젯을 구해쓰면된다. 우선 기본적으로 해당 바이너리는 SSP 보호기법이 걸려있다. 릭 할곳을 찾아야하는데, 다음 함수를 보면 릭이 가능하다. v2는 rbp에서 0x140 만큼 떨..
-
ASIS CTF Finals 2016 - shadowCTF 2016. 9. 12. 02:14
shadow는 Tokyo Western MMA CTF에서도 비슷한 문제가 나왔다. shadow stack 대비해서 이런 문제가 엄청많이 나오는건가.. 그건모르겠지만 그냥 패스 엄청 쉬워보였는데 다른 사람들 라업보고 다시 글 올려야겠다 ㅠㅠ 아쉽다 그냥 6시간의 삽질기를 끄적끄적 해보겠슴다 ㅠㅠ 로컬에서만 쉘따구 리모트에선 쉘을 획득하지 못했습니다 ㅠ 일단 strip이 되어있지않다는점에서 엄청난 이득을 첫번째로 맛보았다. call로 함수를 호출하게되는데, 정말 안티 헥스레이를 본줄알았다. 함수의 인자값은 절대 보이지않는데, 하여 어셈을 읽었다 퓨ㅠㅠ call 함수는 유저가 직접만든 shadow_stack으로 관리된다. 이건 일단 베이스로 깔고.. beer_counter를 호출하는데, 뭐하는지 보면 메뉴를 ..