본문 바로가기

Wargame(CTF)67

[2016 ChristmasCTF] LOLSTMAS Write-up 먼저 초대된 슬랙에 들어가면 봇이 존재한다.봇에게 DM으로 help를 입력하면 사용할 수 있는 명령어를 출력해준다. 먼저 이 부분에서 웹 사이트가 존재한다는 것과 99dan 이라는 쓸모없고 수상한 기능을 파악하는게 출제의도였다. 결론부터 말하자면 99dan 에서 취약점이 터진다.99dan print(1) 을 입력하면 1이 출력된다.사실 Python sandbox escaping을 목적으로 만들었지만 코드를 잘못짜버려서 아무런 필터링이 없는단순한 Command injection 이 되버렸다. 상당히 아쉽다.튼 이 기능을 이용해서 디렉토리 목록을 출력해보면 readme 라는 파일이 존재한다.이 파일을 통해 웹 사이트의 소스백업파일을 받을 수 있다.여러가지 기능들이 존재한다. 그 중 read.php 를 보면 .. 2016. 12. 26.
[Solveme.kr] Point Lotto 보호되어 있는 글 입니다. 2016. 11. 18.
[2016 SECUINSDE CTF] SBBS(Web 250) 먼저 다음과 같은 소스파일이 주어졌다. 파이썬 Flask 소스가 나온다. 보자마자 Template Injection 이라고 생각했다. (참고 : https://nvisium.com/blog/2015/12/07/injecting-flask/) 소스를 살펴보면 코드의 상단에 FLAG = "FLAG{**********************************}" # Can you read it? 이런식으로 flag가 선언되어 있다. flag변수에 접근해야 하는데 우리가 이 값을 확인할 수 있어야 하므로 어떠한것이든 출력해주는 부분을 찾아야 한다. 아래와 같이 51번째 라인에 에러를 처리해주는 함수가 있다. 위 소스를 해석해보면 /abcd 처럼 존재하지 않는 페이지에 접속을 시도하면 abcd was not f.. 2016. 7. 12.
[2014 Codegate] angry_doraemon 로컬에 doraemon.txt / bread.txt / mouse.txt 있어야 문제가 제대로 돌아간다. 환경은 Ubuntu 14.04 를 이용했다. 문제를 로컬에서 실행시키면 8888번 포트를 통해서 돌아간다. 이런저런 루틴을 거쳐서 sub_8049201 함수로 들어가게 되는데 아이다로 까보면 아래와 같다. 이 중 sub_8048fc6 함수(4. Throw mouse 메뉴)에서 오버플로우가 발생한다. buf 크기는 4byte인데 110byte를 read 한다. 그리고 if((BYTE)buf == 121) y인지 확인하고 맞다면 사용자의 입력값을 출력해주는데 이 부분을 통해 카나리를 leak 하고 rop하면 된다. sprintf는 buf를 출력해줄 때 NULL을 만날때까지 출력해주기 때문에 카나리의 첫바.. 2016. 7. 7.
[2013 Codegate] nuclear 보호되어 있는 글 입니다. 2016. 7. 5.
blackjack 보호되어 있는 글 입니다. 2016. 6. 28.