Microsoft Word - newheart_report.docx

Similar documents
persona

Level A9(16 진수 ) 와 (2 진수 ) 의합을 10 진수로나타내시오 과 의 xor 연산을하고 10 진수로나타내시오 3. N e w H e a r t 각각의문자하나를 ascii 코드값의 10 진

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

OCW_C언어 기초

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

금오공대 컴퓨터공학전공 강의자료

PowerPoint 프레젠테이션

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - chap04-연산자.pptx

3ÆÄÆ®-14

C 언어 프로그래밊 과제 풀이

PowerPoint Presentation

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

Secure Programming Lecture1 : Introduction

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

PowerPoint 프레젠테이션

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

PowerPoint Template

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft PowerPoint - Java7.pptx

(SW3704) Gingerbread Source Build & Working Guide

02 C h a p t e r Java

ALTIBASE 사용자가이드 Templete

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

PowerPoint 프레젠테이션

SBR-100S User Manual

중간고사

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

BMP 파일 처리

금오공대 컴퓨터공학전공 강의자료

TEST BANK & SOLUTION

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - chap10-함수의활용.pptx

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

Java ...

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Microsoft PowerPoint - ch07 - 포인터 pm0415

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

게시판 스팸 실시간 차단 시스템

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Microsoft PowerPoint - C++ 5 .pptx

System Recovery 사용자 매뉴얼

SBR-100S User Manual

Secure Programming Lecture1 : Introduction

1217 WebTrafMon II

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

윤성우의 열혈 TCP/IP 소켓 프로그래밍

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Microsoft Word - src.doc

C++ Programming

PowerPoint Presentation

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

1

JAVA PROGRAMMING 실습 02. 표준 입출력

Contents Activity Define Real s Activity Define Reports UI, and Storyboards Activity Refine System Architecture Activity Defin

ALTIBASE 사용자가이드 Templete

Microsoft PowerPoint - chap05-제어문.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap03-변수와데이터형.pptx

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

PowerPoint 프레젠테이션

MPLAB C18 C

UI TASK & KEY EVENT

자바-11장N'1-502


Studuino소프트웨어 설치

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

Windows 8에서 BioStar 1 설치하기

슬라이드 1

Data Structure

슬라이드 1

Chapter 1

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

슬라이드 1

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

untitled

untitled

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

PowerPoint Template

JDK이클립스

PowerPoint 프레젠테이션

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Transcription:

제 1 회청소년화이트해커경진대회 Kwon Hyuk (pwn3r)

Level1 1. 20A9(16 진수 ) 와 1100111111(2 진수 ) 의합을 10 진수로나타내시오 2. 10011000 과 00110101 의 xor 연산을하고 10 진수로나타내시오 3. N e w H e a r t 각각의문자하나를 ascii 코드값의 10 진수합으로나타내면? 1, 2, 3 번키를붙여서인증 간단한연산문제들이다. python 을이용해쉽게계산할수있다. (1) >>> 0x20A9 + 0b1100111111 9192 (2) >>> 0b10011000 ^ 0b00110101 173 (3) >>> str = "NewHeart" >>> sum = 0 >>> for i in str:... sum += ord(i)... >>> sum 798 세값을이어붙인값이인증키이다. Flag : 9192173798

Level2 http://1.221.63.146:10007/lv2/ 주어진 URL 에접속해보면핸드폰으로접속하라는문구만이나온다. pwn3r@localhost:~/ctf/newheart/level11$ curl http://1.221.63.146:10007/lv2/ 핸드폰으로접속하세요 User-Agent 를검사하여핸드폰인지 PC 인지구별한다고생각할수있다. 아이폰의기본 User-Agent 로바꾸어접속시켜본다. pwn3r@localhost:~/ctf/newheart/level11$ curl --user-agent "Mozilla/5.0 (iphone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3" http://1.221.63.146:10007/lv2/ <h6>admin Page</h6><!--password is Well begun is half done.--> Admin Page 라는문구와함께주석으로인증키가나왔다. Flag : Well begun is half done

Level3 http://1.221.63.146:10007/lv3/nh_header.bmp 누군가뉴하트홈페이지에있는로고에비밀번호를숨겨놓았다. < 주어진그림파일 > 주어진그림파일을확대해보면배경과색깔이전혀다른빨강, 초록, 파란색점이군데군데찍 혀있는것을볼수있다. ( 동그라미친부분 ) 이미지뷰어프로그램 Alsee 의픽셀정보보기기능을이용해중간중간에찍힌점들의 RGB 정보를 확인해보니한가지색깔의수가높고나머지두수는같았다. 똑같이눈에띄는점들의위부터순서대로 RGB 정보를수작업으로확인해제일높은각픽셀에서 가장높은값을모아아스키문자로변환해이어붙여보니인증키가나타났다. Flag : newhe@rt!

Level4 http://1.221.63.146:10007/lv4/problem.zip 주어진 zip 파일의압축들풀어보면 7 개의 png 파일과 thisiskey.txt 라는텍스트파일이있다. 그림파일과텍스트파일에서두가지특이한점을찾을수있다. 1) 7 개의그림, 각그림은 7x7 의네모로이루어짐. 2) 7 개의문장, 각문장은 49 글자 한 png 파일에있는작은네모의수와한문장에있는글자의수가동일하므로, 문장마다각 png 에서색칠된부분만모아, 이어붙이면 base85 암호문이나올거라고추측해보았다. ( 제일앞에 decodebase85 라고되있으므로 ) <~E+*g/ GAhM4?Y ORgBOu! rddr0d@ r#drb4#

7^F*),> @;I)1~> 이를이어붙이면정상적인 base85 암호문이만들어진다. <~E+*g/GAhM4?YORgBOu!rDdR0d@r#drB4#7^F*),>@;I)1~> Base85 decode 해보니인증키가나왔다. password_is_hello_hacking_festival!! Flag : hello_hacking_festival!!

Level5 http://1.221.63.146:10007/lv5/h4ck.apk Apk 파일하나가주어졌다. Zip 압축파일과포맷이동일하므로 zip 으로열어압축을풀고, classes.dex 를.jar 로변환후 GUI 자바디컴파일러인 jad-gui 로열어본다. 수상한문자열을 decript 라는함수에인자로넘겨주고, 결과값을화면에보여주는함수가있다. 인증키를보여주는과정이라고의심해볼수있다. decript 함수를 C 프로그램으로작성해실행해보았다. pwn3r@localhost:~/ctf/newheart/level5$ cat gen.c #include <stdio.h> int main(int argc,char **argv) int a; char table[] = "abcdefghijklmnopqrstuvwxyz/.1234567890~_:%+=?"; int arrayofint[45]; arrayofint[0] = 1; arrayofint[1] = 0; arrayofint[2] = 34; arrayofint[3] = 24; arrayofint[4] = 17; arrayofint[5] = 11; arrayofint[6] = 18; arrayofint[7] = 21; arrayofint[8] = 6; arrayofint[9] = 26; arrayofint[10] = 16; arrayofint[11] = 7; arrayofint[12] = 43; arrayofint[13] = 2; arrayofint[14] = 8; arrayofint[15] = 3; arrayofint[16] = 36; arrayofint[17] = 22; arrayofint[18] = 10; arrayofint[19] = 28; arrayofint[20] = 9; arrayofint[21] = 13; arrayofint[22] = 14; arrayofint[23] = 20;

arrayofint[24] = 5; arrayofint[25] = 41; arrayofint[26] = 25; arrayofint[27] = 37; arrayofint[28] = 29; arrayofint[29] = 31; arrayofint[30] = 44; arrayofint[31] = 30; arrayofint[32] = 35; arrayofint[33] = 23; arrayofint[34] = 38; arrayofint[35] = 40; arrayofint[36] = 33; arrayofint[37] = 4; arrayofint[38] = 27; arrayofint[39] = 19; arrayofint[40] = 15; arrayofint[41] = 12; arrayofint[42] = 42; arrayofint[43] = 32; arrayofint[44] = 39; int i, j, k ; j = strlen(argv[1]); for(i=0; i<j; i++) for(k=0;k<45;k++) if(argv[1][i] == table[k]) for(a=0;a<45;a++) if(arrayofint[a] == k) printf("%c", table[a]); printf("\n"); pwn3r@localhost:~/ctf/newheart/level5$./gen ygbahi?+hih5vrhhsb1r diablo3+lol=hellgate 결과로겁나키값같이생긴문자열이나타났다. 인증을했더니성공했다. Flag : diablo3+lol=hellgate

Level6 http://1.221.63.146:10007/lv6/nhf3.xap 주어진파일은윈도우폰어플리케이션이다. 윈도우폰에뮬레이터를설치해어플리케이션을실행시켜보니 9 개의숫자버튼과 Submit 버튼, Cancel 버튼이나온다. 최대 9 자리까지각숫자를한번씩입력할수있다. < 에뮬레이터실행화면 > 숫자입력후 submit 버튼을누르면위에알수없는문자열이나타난다. zip 파일과포맷이동일하므로 zip 으로압축을풀고, 내장된 nhf.dll 을닷넷디플렉터로열어분석해 본다. 아래는 submit 버튼을누르면실행되는부분이다.,

위함수는 a5b8f53248a781e32e4fac5190dbfabc 를 key 로, 입력한숫자를 iv 와버튼의숫자들을 iv 로하여 "e069836af6c41b560477d80ce8b08a36" 를 AES-128 로암호화한다. submit버튼을누르면에뮬레이터화면에문자열이잘려서나타난다. 그래서정상적으로결과문자열을복사할수있도록위코드와같은동작을하도록 C# 프로그램을만들고, xap파일에포함된 WMAppManifest.xml에있는 9자리의숫자 ( 아래사진에서 134628957) 가어플리케이션에서입력됬을때생성되는암호를구해인증을시도했더니성공했다. ( 위숫자순서로어플리케이션에서입력하면변수엔 284361597 로들어감 ) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.IO; namespace ConsoleApplication1 class Program static void Main(string[] args) byte[] arr = new byte[10]; byte a = 3;

byte b = 5; byte c = 6; byte d = 4; byte e = 8; byte f = 1; arr[0] = 0; arr[1] = 2; arr[2] = 8; arr[3] = 4; arr[4] = 3; arr[5] = 6; arr[6] = 1; arr[7] = 5; arr[8] = 9; arr[9] = 7; Rfc2898DeriveBytes rfc2898derivebyte = new Rfc2898DeriveBytes("a5b8f53248a781e32e4fac5190dbfabc", arr); Aes aesmanaged = new AesManaged(); aesmanaged.key = rfc2898derivebyte.getbytes(aesmanaged.keysize / 8); aesmanaged.iv = rfc2898derivebyte.getbytes(aesmanaged.blocksize / 8); using (MemoryStream memorystream = new MemoryStream()) ICryptoTransform cryptotransform = aesmanaged.createencryptor(); using (CryptoStream cryptostream = new CryptoStream(memoryStream, cryptotransform, CryptoStreamMode.Write)) byte[] bytes = Encoding.UTF8.GetBytes("e069836af6c41b560477d80ce8b08a36"); cryptostream.write(bytes, 0, (int)bytes.length); cryptostream.flushfinalblock(); Console.WriteLine(Convert.ToBase64String(memoryStream.ToArray())); Console.ReadLine(); Flag : u+vscbgx4hx8onbrk0dh8rxcbdg1fncoh8xn2uy8adkouk4hchvrk/lgpumcqq8n

Level7 http://1.221.63.146:10007/quiz/ 대회중가장많은시간을보내게했던문제이다. 주어진 URL에접속하면자바스크립트로구현된룰렛게임을진행한다. 룰렛게임은 5월1일 ~5월31일중에 100번을할수있으며한번게임을한후엔, 30분이상이지나야또다시게임을할수있다. 각룰렛에서얻는최대포인트는 3포인트이다. 이룰렛게임을통해얻은누적포인트로 HINT1(50 point), HINT2(100 point), ANSWER(1000 point) 등을살수있다. 포인트를관리하는페이지에서타임스탬프를인자로받아관리함을이용해, 타임스탬프를 30분에해당하는수만큼증가시켜가며접속시켜포인트를빠르게늘릴수있었지만 100번까지만가능하기때문에최대 300포인트까지밖에올릴수없다. 그래서힌트를읽어보니두힌트는아래와같다. HINT1: timestamp HINT2 : UPDATE quiz set timestamp=(value), point=(value), counter = (value) WHERE ip_addr = (ip) 두힌트로미루어보아위쿼리의 timestamp value부분에서 sql 인젝션취약점이있다고생각했지만원하는대로되지않고오랜시간이지나그냥자고일어났더니다른참가자의실수로내포인트가 213574357점으로올라가있었다. ㄳ Flag : NewHeartBeat

Level8 http://1.221.63.146:10007/lv8/wavwav.wav 주어진파일은예전에방영됬던드라마 NewHeart 의 OST 가있는 wav 음악파일이다. 음악파일안에 string 이나 lsb 를모아봐도특별한정보를얻을수없어해당음악파일의 스펙트럼을확인해보았다. 위사진과같이스펙트럼에서숫자들이나타나는것을불수있다. 333233423121341231 / 00011100110100000010000101010001100000010101 왼쪽에있는숫자만큼오른쪽에있는숫자를나누고, 나누어진각숫자들을모스부호로서문자로 변환해보았다. 000/111/001/10/100/000/0100/00/101/0/10/0/011/0000/0/01/010/1 3 3 3 2 3 3 4 2 3 1 2 1 3 4 1 2 3 1 000/111/001/10/100/000/0100/00/101/0/10/0/011/0000/0/01/010/1 ( 0->., 1->-) =>... ---..- -. -......-.... -.-. -...--.....-.-. => S O U N D S L I K E N E W H E A R T 0 을. 으로, 1 을 로나타내어모스부호로서알파벳으로변환해보니 SOUNDLIKENEWHEART 라는 문자열이나왔고, 이를소문자로인증했더니인증에성공했다. Flag : soundslikenewheart

Level9 Download Date? (yyyymmddhhmmss) http://1.221.63.146:10007/lv9/prob.zip 주어진파일은 Internet Explorer History File 이다. pwn3r@localhost:~/ctf/newheart/level9$ file Prob Prob: Internet Explorer cache file version Ver 5.2 Internet Explore History File 은접속한 URL 과마지막수정시간, 마지막접속시간, 캐시폴더 이름, 파일명, HTTP Header 등을저장해둔다. Index.dat analyzer 라는프로그램을이용해저장된정보를간단하게정리해서볼수있다. download 라는서브도메인이붙어있는것으로보아 http://download.cnet.com 에서파일을다운로드것으로추측할수있다. 파일을다운로드한날짜는 download.cnet.com 에접속한 10/19/2012 10:55:14 이므로문제에서요구한형식 (yyyymmddhhmmss) 대로맞추면인증키는 20120119105514 이다. * 관련문서 : http://forensicinsight.org/wp-content/uploads/2012/03/insight_web-browser- Forensics_Part1.pdf Flag : 20120119105514

Level10 http://1.221.63.146:10007/lv10/android.zip NewHeart 수사대는어떤사건을수사하던중마약사건에관련된범인을체포하였다. 범인은마약을밀거래하는사람으로특정일특정장소에서밀거래상과접선할예정이었다는점을자백하였으나수사대는더이상의자세한내용은밝혀내지못했다. 유일한단서는범인이가지고있던스마트폰으로, 암거래상과정보를주고받았을가능성이높다. 암거래상과의접선장소및시간을찾아라. 주어진파일은안드로이드폰의전체데이터를백업한것이다. 암거래상과정보를주고받았다면제일먼저문자메시지를의심해볼수있다. 안드로이드에서문자메시지는 /data/data/com.android.providers.telephony/databases/mmssms.db 에저장되며, SMS 일때, 첨부파일등은 /data/data/com.android.providers.telephony/app_parts 에저장된다. 우선첨부파일을확인해보니 PART_13372276170 라는파일명의 jpg 파일이하나있었다. < PART_13372276170 > 이를열어보니인증키가적혀있어인증에성공했다.. Flag : IU_CONCERT_1800_PM_JUNE_02_2012