웹취약점진단시스템개발 (OWASP TOP 10 기반 ) 팀명 : WeST 지도교수 : 양환석교수님 팀 장 : 박의명 팀 원 : 심명섭오경준송요섭강보경조예림 중부대학교정보보호학과

Size: px
Start display at page:

Download "웹취약점진단시스템개발 (OWASP TOP 10 기반 ) 팀명 : WeST 지도교수 : 양환석교수님 팀 장 : 박의명 팀 원 : 심명섭오경준송요섭강보경조예림 중부대학교정보보호학과"

Transcription

1 웹취약점진단시스템개발 (OWASP TOP 10 기반 ) 팀명 : WeST 지도교수 : 양환석교수님 팀 장 : 박의명 팀 원 : 심명섭오경준송요섭강보경조예림 중부대학교정보보호학과

2 목 차 1. 서론 1.1 연구목적및필요성 연구주제선정이유 2 2. 관련연구 2.1 Python Ubuntu Apache MySQL Php Html 4 3. 본론 3.1 구상도설명 취약점진단도구제작및실행 리포팅시스템개발 결론 4.1 결론및기대효과 참고자료 별첨 6.1 발표 PPT 소스코드 26

3 1. 서론 1.1 연구목적및필요성웹은접근의용이성때문에보안사고의대부분을차지할정도로집중적인공격대상이되고있어그범위와피해가날이갈수록증가하고있다. 그래프 ( 출처 : verizon data breach investigations report) 를보면웹어플리케이션을공격하는방식이가장많은공격비중을차지한다는것을알수있다. 이에 OWASP TOP 10을기준으로하여웹취약점을진단하고대응방안까지알려주는보안시스템을개발하려고한다. < 그림 1 : Verizon 데이터침해조사보고서 > 1.2 연구주제선정이유시중에사용되고있는취약점진단서비스는면담을통해수기로이루어지거나직접고객사와만나며이루어져야한다는제한성을가지고있다. 그에비해 WeST팀은직접웹취약점진단사이트를구축함으로써사용자의인증절차를통해접근을편리성을가진웹사이트와발견된취약점에대한대응방안을볼수있는리포팅시스템을개발한다

4 2. 관련연구 2.1 Python python은 1991년프로그래머인 Guido van Rossum이발표한고급프로그래밍언어로플랫폼독립적이며인터프리터식, 객체지향적, 동적타이핑대화형언어이다. Python은비영리의 Python 소프트웨어재단이관리하는개방형, 공동체기반개발모델을가지고있다 C언어로구현된 C파이썬구현사실상의표준이다. < 그림 2-1 : 파이썬로고 > 2.2 Ubuntu 우분투는컴퓨터에서프로그램과주변기기를사용할수있도록해주는운영체제중하나이다. 안드로이드운영체제처럼리눅스커널에기반한운영체제로모바일과데스크톱 PC, 서버에도우분투운영체제를설치해사용할수있다. 리눅스는리누스토발즈라는개발자가어셈블리어라는프로그래밍언어로유닉스를모델삼아개발한오픈소스운영체제이다. 우분투는리눅스 OS의배포판중하나로특히데스크톱 PC에서사용할수있게특화된운영체제이다. < 그림 2-2 : Ubuntu > 2.3 Apache Apache HTTP 서버는아파치소프트웨어재단에서관리하는 HTTP 웹서버이다. BSD, 리눅스등유닉스계열뿐아니라마이크로소프트윈도우나노벨넷웨어같은기종에서 - 3 -

5 도운용할수있다. 아파치프로젝트는공동제작과합의에기반한개발프로세스와오픈 되고실용적인소프트웨어라이선스라는특징으로규정된다. 2.4 MySQL MYSQL은세계에서가장많이쓰이는오픈소스의관계형데이터베이스관리시스템이다. RDBMS라고도불린다. 다중스레드, 다중사용자의형식의구조질의어형식의데이터베이스관리시스템으로써 MYSQL AB가관리및지원하고있으며 Qt처럼이중라이선스가적용된다. 하나의옵션은 GPL이며 GPL이외의라이선스로적용시키려는경우전통적인지적재산권라이선스의적용을받는다. 2.5 Php php는 C언어를기반으로만들어진서버측에서실행되는서버사이드스크립트언어이다. 동적웹페이지를만들기위해설계되었으며이를구현하기위해 php로작성된코드를 html 소스문서안에넣으면 php 처리기능이있는웹서버에서해당코드를인식하여작성자가원하는웹페이지를생성한다. 근래에는 PHP 코드와 HTML을별도파일로분리하여작성하는경우가일반적이며, PHP 또한웹서버가아닌 php-fpm(php FastCGI Process Manager) 을통해실행하는경우가늘어나고있다. 또한 PHP는명령줄인터페이스방식의자체인터프리터를제공하여이를통해범용프로그래밍언어로도사용할수있으며그래픽애플리케이션을제작할수도있다. 2.6 Html 하이퍼본문표식달기언어라는의미의웹페이지를위한지배적인마크업언어다. HTML은제목, 단락, 목록등과같은본문을위한구조적의미를나타내는것뿐만아니라링크, 인용과그밖의항목으로구조적문서를만들수있는방법을제공한다. 그리고이미지와객체를내장하고대화형양식을생성하는데사용될수있다. 3. 본론 3.1 구상도설명 - 4 -

6 < 그림 3-1 : 구상도 > 3.2 취약점진단도구제작및실행 OWASP Top 10 과 KISA 에서발간한주요정보통신기반시설기술적취약점 분석 평가방법상세가이드를토대로해당취약점진단도구를개발하였다. < 그림 3-2 : OWASP Top > - 5 -

7 먼저비회원이인증절차를통하여회원가입을하고, 로그인및진단요청을하게되면취약점진단도구를통해해당웹사이트에대한취약점을진단한다. 이후리포팅시스템을통해취약점진단보고서를작성해데이터베이스에저장하고, 사용자에게보고서를전달해준다. < 그림 3-3 : Web 취약점분석 평가항목 > - 6 -

8 < 그림 3-4 : SQL INJECTION 취약점도구소스일부 > < 그림 3-5 : XSS 취약점도구소스일부 > - 7 -

9 < 그림 3-6 : 디렉토리리스팅취약점도구소스일부 > < 그림 3-7 : 알려진취약점도구소스일부 > - 8 -

10 < 그림 3-8 : 관리자페이지노출취약점도구소스일부 > < 그림 3-9 : 데이터평문전송취약점도구소스일부 > - 9 -

11 웹사이트를개발하여웹상에서취약점진단을할수있도록하였다. < 그림 3-10 : 웹사이트메인화면 >

12 < 그림 3-11: 취약점진단화면 > 3.3 리포팅시스템개발 취약점진단이후사용자에게보고서를제공하기위하여보기쉽게 PDF 파일로 생성하여가독성을높였다. < 그림 3-12 : 리포팅시스템소스일부 >

13 < 그림 3 13 : 진단결과화면 > < 그림 3 14 : 리퍼팅시스템으로만든 PDF 파일 >

14 4. 결론 웹취약점진단시스템을만들어 XSS과 SQL Injection등의취약점을이용한웹공격에대한진단시스템을완성하는것으로목표로설정하고서비스를제공하기위해인가된사용자만이용가능하도록웹사이트를개발하였다. 진단이후리포팅시스템을통해관리자에게대응방안과취약점들을제공해안정적이고효율적으로웹사이트를운영할수있도록지원을한다. 기대효과로는웹서비스를운영하기전이나후에취약점진단도구를이용하여관리자에게대응방안과취약한부분에대한보고서를제공하고온라인에서자동으로웹사이트취약점진단을진행하여빠르고간결하게웹취약점진단을할수있다. 5. 참고자료 [1] verizon data breach investigations report [2] KISA 주요정보통신기반시설취약점진단가이드 2014 [3] KISA 홈페이지취약점진단제거가이드 6. 별첨 6.1 발표 PPT 6.2 소스코드

15 6.1 발표 PPT

16 - 15 -

17 - 16 -

18 - 17 -

19 - 18 -

20 - 19 -

21 - 20 -

22 - 21 -

23 - 22 -

24 - 23 -

25 - 24 -

26 - 25 -

27 - 26 -

28 6.2 소스코드 <db.php> <?php $host = 'localhost'; $username = 'root'; $password = 'song0401'; $dbname = 'WeST'; $options = array(pdo::mysql_attr_init_command => 'SET NAMES utf8'); try { $con = new PDO("mysql:host={$host;dbname={$dbname;charset=utf8",$username, $password); catch(pdoexception $e) { die("failed to connect to the database: ". $e->getmessage());

29 $con->setattribute(pdo::attr_errmode, PDO::ERRMODE_EXCEPTION); $con->setattribute(pdo::attr_default_fetch_mode, PDO::FETCH_ASSOC); if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) { function undo_magic_quotes_gpc(&$array) { foreach($array as &$value) { if(is_array($value)) { undo_magic_quotes_gpc($value); else { $value = stripslashes($value); undo_magic_quotes_gpc($_post); undo_magic_quotes_gpc($_get); undo_magic_quotes_gpc($_cookie);?> header('content-type: text/html; charset=utf-8'); session_start(); <dbinit.php> <?php error_reporting(e_all); ini_set('display_errors',1); include('check.php'); $databasename = 'WeST'; $databaseuser = 'root'; $databasepassword = 'song0401'; 데이터베이스생성 $pdodatabase = new PDO('mysql:host=localhost', $databaseuser, $databasepassword); $pdodatabase->setattribute(pdo::attr_errmode, PDO::ERRMODE_EXCEPTION); $pdodatabase->exec('drop DATABASE IF EXISTS WeST;'); $pdodatabase->exec('create DATABASE IF NOT EXISTS WeST DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci'); 테이블생성 $pdo = new PDO('mysql:host=localhost;dbname='.$databaseName, $databaseuser, $databasepassword); $pdo->setattribute(pdo::attr_errmode, PDO::ERRMODE_EXCEPTION);

30 $pdo->exec('drop TABLE IF EXISTS yo;'); $pdo->exec('create TABLE `yo` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, ` ` VARCHAR(255), `domain` VARCHAR(255), `salt` VARCHAR(255) NOT NULL, `regtime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci') echo " 데이터베이스초기화에성공했습니다.\n"; <check.php> <?php error_reporting(e_all); ini_set('display_errors',1); function is_login(){ global $con; if (isset($_session['user_id']) &&!empty($_session['user_id']) ){ $stmt = $con->prepare("select username from yo where username=:username"); $stmt->bindparam(':username', $_SESSION['user_id']); $stmt->execute(); $count = $stmt->rowcount(); if ($count == 1){ return true; // 로그인상태 else{ // 사용자테이블에없는사람 return false; else{ return false; // 로그인안된상태 // -

31 function encrypt($plaintext, $salt) { $method = "AES-256-CBC"; $key = hash('sha256', $salt, true); $iv = openssl_random_pseudo_bytes(16); $ciphertext = openssl_encrypt($plaintext, $method, $key, OPENSSL_RAW_DATA, $iv); $hash = hash_hmac('sha256', $ciphertext, $key, true); return $iv. $hash. $ciphertext; function decrypt($ivhashciphertext, $salt) { $method = "AES-256-CBC"; $iv = substr($ivhashciphertext, 0, 16); $hash = substr($ivhashciphertext, 16, 32); $ciphertext = substr($ivhashciphertext, 48); $key = hash('sha256', $salt, true); if (hash_hmac('sha256', $ciphertext, $key, true)!== $hash) return null; return openssl_decrypt($ciphertext, $method, $key, OPENSSL_RAW_DATA, $iv);?> < main.php > <?php include('db.php'); include('check.php'); if(is_login()){?> if(isset($_session['user_id'])) { header("location: welcome.php"); <!DOCTYPE HTML> <html> <head> <title>west</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="" /> <meta name="keywords" content="" /> <script src="js/jquery.min.js"></script> <script src="js/skel.min.js"></script> <script src="js/skel-layers.min.js"></script> <script src="js/init.js"></script>

32 </head> <script > function check() { alert(' 로그인먼저하세요.') </script> <body id="top"> <header id="header" class="skel-layers-fixed"> <h1><a href="#">west</a></h1> <nav id="nav"> <ul> <li><a href="#" class="button special" onclick="check()"> 진단하기 </a></li> </ul> </nav> </header> </ul> <section id="banner"> <div class="inner"> <h2>west</h2> <p><b> 중부대학교 3 조졸업작품 </b> <a href="#">west Team</a></p> <ul class="actions"> <li><a href="#two" class="button big special">login</a></li> <li><a href="#one" class="button big alt">vulnerabilities</a></li> </div> </section> <section id="one" class="wrapper style1"> <header class="major"> <h2>kind Of Vulnerabilities</h2> <p>xss, Adminstrator Page, Known Vulnerabilities, Port Scan, SQL, Directory Listing</p> </header> <div class="container"> <div class="row"> <div class="4u"> <section class="special box"> <i class="icon fa-area-chart major"></i> <h3>xss</h3> <p>xss(cross Site Script) 는웹상에서가장기초적인취약점공격방법의일종으로, 악의적인사용자기공격하려는사이트에스크립트를넣는기법을말합니다. 공격에성공하면사이트에접속한사용자는삽입된코드를실행하게되며, 보통의도치않는행동을수행시키거나쿠키나세션토큰등의민감한정보를탈취합니다.</p> </section </div> <div class="4u"> <section class="special box"> <i class="icon fa-refresh major"></i> <h3>adminstrator Page</h3> <p>admin, adminstartor 등관리자페이지가인터넷을통해추측성접근이

33 가능할경우, 공격자의주타겟이될수있으며, 이는공격자의 SQL 인젝션, Brute-Force 공격등다양한형태의공격의빌미를제공하는취약점입니다.</p> </section> </div> <div class="4u"> <section class="special box"> <i class="icon fa-cog major"></i> <h3>known Vulnerabilities</h3> <p> 대게라이브러리, 프레임워크및다른소프트웨어모듈같은컴포넌트는애플리케이션과같은권한으로실행됩니다. 알려진취약점이있는컴포넌트를사용한애플리케이션과 API 는애플리케이션방어를약화시키거나다양한공격과영향을주는취약점입니다. </p> </section> </div> </div> </div> </section> <section id="one" class="wrapper style1_2"> <div class="container"> <div class="row"> <div class="4u"> <section class="special box"> <i class="icon fa-area-chart major1"></i> <h3>port Scan</h3> <p> 포트스캔이란, 대상의어떤포트가열려있는지확인하는작업으로침입전취약점을분석하기위한사전작업이라볼수있다, 스캐닝을통해대상의네트워크보안장비사용현황, 우회가능네트워크구조, 해당네트워크내의시스템플랫폼형태, 시스템운영체제의커널버전, 제동하는서비스등에대한정보를알수있어포트가열려있을시취약할수있는취약점이다.</p> </section> </div> <div class="4u"> <section class="special box"> <i class="icon fa-refresh major1"></i> <h3>sql</h3> <p>sql Injection 이란, 대표적인웹어플리케이션취약점중하나입니다. 애플리케이션에서서버로전달되는명령, 쿼리, 스크립트등의값을변도하여비정상적인방법으로시스템에접근하는공격기법입니다. 또한웹어플리케이션에서만국한되지않고데이터베이스와연결된모든어플리케이션에서고려해볼수있는공격기법입니다. </p> </section> </div> <div class="4u"> <section class="special box"> <i class="icon fa-cog major1"></i> <h3>directory Listing</h3> <p>directorying 취약점은브라우징하는모든파일을보여줍니다. 원래의모적은문서의공유로파일탐색기처럼원하는문서로바로찾아갈수있게하는용도였지만최근에는문서의저장및열람이가능하다면문서의취약점 ( 백업파일및소스코드, 스크립트파일의유출로인한계정정보유출등 ) 을이용해악의적인목적을갖고있는사람들에게탈취및웹서버

34 공격이이루어질수있는취약접입니다.</p> </section> </div> </div> </section> <!-- Two --> <section id="two" class="wrapper style2"> <header class="major"> <h2>login</h2> </header> <div class="content"> <div class="signin-cont cont"> <form method="post"> <input id="login username" name="user_name" type="text" class="inpt" placeholder="username"required autocomplete="off" readonly onfocus="this.removeattribute('readonly');" /> <input id="login password" name="user_password" type="password" class="inpt" placeholder="password" required autocomplete="off" readonly onfocus="this.removeattribute('readonly');" /> <div class="submit-wrap"> <input type="submit" name="login" class="submit" value="login"> <a href="new_login.php" class="more">new_login</a> </div> </form> </div> </div> </section> </body> </html> <?php $login_ok = false; if ( ($_SERVER['REQUEST_METHOD'] == 'POST') and isset($_post['login']) ) { $username=$_post['user_name']; $userpassowrd=$_post['user_password']; if(empty($username)){ $errmsg = " 아이디를입력하세요."; else if(empty($userpassowrd)){ $errmsg = " 패스워드를입력하세요.";

35 else{ try { username=:username'); $stmt = $con->prepare('select * from yo where $stmt->bindparam(':username', $username); $stmt->execute(); catch(pdoexception $e) { die("database error. ". $e->getmessage()); $row = $stmt->fetch(); $salt = $row['salt']; $password = $row['password']; $decrypted_password = decrypt(base64_decode($password), $salt); if ( $userpassowrd == $decrypted_password) { $login_ok = true; if(isset($errmsg) echo "<script>alert('$errmsg')</script>";?> if ($login_ok){ $_SESSION['user_id'] = $username; header('location:welcome.php'); session_write_close(); else{ echo "<script>alert('$username 인증오류 ')</script>"; <New_login.php> <?php include('db.php'); include('check.php'); function validatepassword($password){

36 if(strlen($password) < 8 empty($password)) { return 0; if((strlen($password) > 48)) { return 0; if(preg_match('/[a-z]/',$password) == (0 false)){ return 1; if(!preg_match('/[\d]/',$password)!= (0 false)){ return 2; if(preg_match('/[\w]/',$password) == (0 false)){ return 3; return true; if( ($_SERVER['REQUEST_METHOD'] == 'POST') && isset($_post['submit'])) { foreach ($_POST as $key => $val) { if(preg_match('#^ autocomplete_fix_#', $key) === 1){ $n = substr($key, 19); if(isset($_post[$n])) { $_POST[$val] = $_POST[$n]; $username=$_post['newusername']; $password=$_post['newpassword']; $confirmpassword=$_post['newconfirmpassword']; $ =$_post['new ']; $domain=$_post['newdomain']; if ($_POST['newpassword']!= $_POST['newconfirmpassword']) { $errmsg = "<script>alert(' 패스워드가일치하지않습니다.')</script>"; if(empty($username)){ $errmsg = "<script>alert(' 아이디를입력하세요 ')</script>"; else if(empty($password)){ $errmsg = "<script>alert(' 패스워드을입력하세요.')</script>"; else if(empty($ )){ $errmsg = "<script>alert(' 을입력하세요.')</script>";

37 else if(empty($domain)){ $errmsg = "<script>alert('domain 을입력하세요.')</script>"; try { $stmt = $con->prepare('select * from yo where username=:username'); $stmt->bindparam(':username', $username); $stmt->execute(); catch(pdoexception $e) { die("database error: ". $e->getmessage()); $row = $stmt->fetch(); if ($row){ $errmsg = "<script>alert(' 이미존재하는아이디입니다 ')</script>"; if(!isset($errmsg)) { try{ $stmt = $con->prepare('insert INTO yo(username, password, , salt, domain) VALUES(:username, :password, : , :salt, :domain)'); $stmt->bindparam(':username',$username); $salt = bin2hex(openssl_random_pseudo_bytes(32)); $encrypted_password = base64_encode(encrypt($password, $salt)); $stmt->bindparam(':password', $encrypted_password); $stmt->bindparam(': ',$ ); $stmt->bindparam(':salt',$salt); $stmt->bindparam(':domain',$domain);?> if($stmt->execute()) { $successmsg = "<script>alert(' 새로운사용자를추가했습니다.')</script>"; header("refresh:1;west.php"); else { $errmsg = " 사용자추가에러 "; catch(pdoexception $e) { die("database error: ". $e->getmessage()); <!DOCTYPE HTML> <html> <head> <title>west</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="" />

38 <meta name="keywords" content="" /> <script src="js/jquery.min.js"></script> <script src="js/skel.min.js"></script> <script src="js/skel-layers.min.js"></script> <script src="js/init.js"></script> </head> <script > function _ck(){ var = document.getelementbyid("em").value; var domain = document.getelementbyid("dom").value; url = " _ck.php?domain="+domain+"& ="+ ; window.open(url, "window_name",'width=800,height=500,location=no,status=no,scrollbars=no, resizable=no'); function check(){ var ck = document.getelementbyid("aa").value; che = " _ok.php"; window.open(url, "window_name",'width=800,height=500,location=no,status=no,scrollbars=no, resizable=no'); function check1() { alert(' 로그인먼저하세요.') </script> <body id="top"> <!-- Header --> <header id="header" class="skel-layers-fixed"> <h1><a href="#">west</a></h1> <nav id="nav"> <ul> <li><a href="#" class="button special" onclick="check1()"> 진단하기 </a></li> </ul> </nav> </header> <section id="two" class="wrapper style2"> <header class="major"> <h2> 새로운사용자추가 </h2> </header> <div class= tabs > <span class="tab signin active"><a href="west.php"><b>back</b></a></span> </div> <?php if(isset($errmsg)){?> <div class="alert alert-danger"> <span class="glyphicon glyphicon-info-sign"></span> <strong><?php echo $errmsg;?></strong> </div> <?php

39 else if(isset($successmsg)){?> <div class="alert alert-success"> <strong><span class="glyphicon glyphicon-info-sign"></span> <?php echo $successmsg;?></strong> </div> <?php?> <div class="content"> <div class="signin-cont cont"> <form method="post" enctype="multipart/form-data"> <? $r1 = rmd5(rand().mocrotime(true));?> <input type="text" name="<? echo $r1;?>" class="inpt" placeholder=" 아이디를입력하세요." autocomplete="off" readonly onfocus="this.removeattribute('readonly');" /> <input type="hidden" name=" autocomplete_fix_<? echo $r1;?>" value="newusername" /> <? $r2 = rmd5(rand().mocrotime(true));?> <input type="password" name="<? echo $r2;?>" class="inpt" placeholder=" 패스워드를입력하세요 " autocomplete="off" readonly onfocus="this.removeattribute('readonly');" /> <input type="hidden" name=" autocomplete_fix_<? echo $r2;?>" value="newpassword" /> <? $r3 = rmd5(rand().mocrotime(true));?> <input type="password" name="<? echo $r3;?>" class="inpt" placeholder=" 패스워드를다시한번입력하세요 " autocomplete="off" readonly onfocus="this.removeattribute('readonly');" /> <input type="hidden" name=" autocomplete_fix_<? echo $r3;?>" value="newconfirmpassword" /> <? $r4 = rmd5(rand().mocrotime(true));?> <input type="text" id="em" name="new " name="<? echo $r4;?>" class="inpt" placeholder=" 이메일를입력하세요 " autocomplete="off" readonly onfocus="this.removeattribute('readonly');" /> <input type="hidden" name=" autocomplete_fix_<? echo $r4;?>" value="new " /> <? $r5 = rmd5(rand().mocrotime(true));?> <input type="text" id="dom" name="newdomain" name="<? echo $r5;?>" class="inpt" placeholder=" 도메인을입력하세요 " autocomplete="off" readonly onfocus="this.removeattribute('readonly');" /> <input type="hidden" name=" autocomplete_fix_<? echo $r5;?>" value="newdomain" /> <div class="do"> <input type="submit" name="submit" value="register" onclick="check()"> </div> <input type="submit" name="aa" value=" 진단하기 " onclick=" _ck() > </div> </form>

40 </div> </section> <welcome.php> <?php include('db.php'); include('check.php'); if (is_login()){ ; else header("location: west.php");?> <?php $user_id = $_SESSION['user_id']; try { $stmt = $con->prepare('select * from yo where username=:username'); $stmt->bindparam(':username', $user_id); $stmt->execute(); catch(pdoexception $e) { die("database error: ". $e->getmessage()); $row = $stmt->fetch();?> <!DOCTYPE HTML> <html> <head> <title>west <?php echo($row['username']);?> 님 </title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body id="top"> <!-- Header --> <header id="header" class="skel-layers-fixed"> <h1><a href="#"><?php echo $user_id;?> 님 </a></h1> <nav id="nav"> <ul> <li><a href="logout.php" class="button special">logout</a></li> </ul>

41 </nav> </header> <!-- Banner --> <section id="banner"> <div class="inner"> <h2>west</h2> <p><b> 중부대학교 3조 졸업작품 </b> <a href=" Team</a></p> <ul class="actions"> <li> <input type="submit" value="<?php echo($row[' ']);?> 진단하기 " class="button big special" onclick="window.open('./song/ppp.php','window_name','width=800,height=500,location=no,status= no,scrollbars=no');"></li> <li><input type="submit" value="<?php echo($row[' ']);?> 조회하기 " class="button big alt" onclick="window.open('look.php','window_name','width=800,height=500,location=no,status=no,scr ollbars=no');"></li> </ul> </div> </section> <result.php> <?php include('/var/www/html/west/db.php'); include('/var/www/html/west/check.php');?> <?php $user_id = $_SESSION['user_id']; try { $stmt = $con->prepare('select * from yo where username=:username'); $stmt->bindparam(':username', $user_id); $stmt->execute(); catch(pdoexception $e) { die("database error: ". $e->getmessage()); $row = $stmt->fetch();?> <!DOCTYPE html> <html> <head> <title>result</title> </head> <table class="table" border="1" > <caption>starting Web scan... <a><?php echo($row[' ']);?></a>...<?php

42 echo($row['regtime']);?></caption> <tr><th> No. </th><th> 진단항목 </th><th> </th></tr> <tr><td> 1/6 </td><td> 데이터평문전송 </td><td> <div ><img id="l05" src="song.gif" width="20px" height="20px"></td></tr> <tr><td> 2/6 </td><td> 관리자페이지노출 </td><td > <div id ="l06" > <img id="l01" src="song.gif" width="20px" height="20px "> </td></tr> <tr><td> 3/6 </td><td> 알려진취약점 </td><td><div ><img id="l02" src="song.gif" width="20px" height="20px"></div> </td></tr> <tr><td> 4/6 </td><td> 디렉토리리스팅 </td><td> <div ><img id="l03" src="song.gif" width="20px" height="20px" ></td></tr> <tr><td> 5/6 </td><td> XSS</td><td ><div ><img id="l04" src="song.gif" height="20px" ></div><div id="l06"> </div></td></tr> width="20px" <tr><td> 6/6 </td><td> SQL INJECTION</td><td> <div ><img id="loading2" src="a.jpg" width="20px" height="20px"><img id="loading" src="song.gif" width="20px" height="20px "></div> <iframe src="result.php" id="iframe100"></iframe> </td></tr> <script> var ld= document.getelementbyid("loading"); window.addeventlistener("load", function(){ ld.style.display="none"; ); </script> </table> </div> <input type='button' value=" 창닫기 " onclick='self.close()'> </body> </html> <lnquiry.php> <?php include('db.php'); include('check.php'); if (is_login()){ ; else header("location: west.php");

43 ?> <?php $user_id = $_SESSION['user_id']; try { $stmt = $con->prepare('select * from yo where username=:username'); $stmt->bindparam(':username', $user_id); $stmt->execute(); catch(pdoexception $e) { die("database error: ". $e->getmessage()); $row = $stmt->fetch();?> <!doctype html> <html lang="kr"> <head> <meta charset="utf-8"> <title>west</title> </head> <body> <p> 진단결과 </p> <table class="table" border="1"> <tr> <th> 번호 </th><th> 제목 </th><th> 날짜 </th><th>download</th> </tr> <tbody> <tr> <td>1</td> <td><?php echo $row['username']?> 의진단결과 </td> <td><?php echo $row['regtime']?></td> <td><a href="download.php">download</a></td> </tr> </tbody> </table> </body> </html> <download.php> <?php include('db.php'); include('check.php'); if (is_login()){ ; else header("location: west.php");?> <?php $user_id = $_SESSION['user_id']; try { $stmt = $con->prepare('select * from yo where username=:username'); $stmt->bindparam(':username', $user_id);

44 $stmt->execute(); catch(pdoexception $e) { die("database error: ". $e->getmessage()); $row = $stmt->fetch();?> <?php $user = $_SESSION['user_id']; $filename = "cve_log_$user.pdf"; $file = "./song/". $filename; if (is_file($file)) { if (preg_match("/msie*/", $_SERVER['HTTP_USER_AGENT'])) { header("content-type: application/octet-stream"); header("content-length: ".filesize("$file")); header("content-disposition: attachment; filename=$filename"); // 다운로드되는파일명 ( 실제파일명과별개로지정가능 ) header("content-transfer-encoding: binary"); header("cache-control: must-revalidate, post-check=0, pre-check=0"); header("pragma: public"); header("expires: 0"); else { header("content-type: file/unknown"); header("content-length: ".filesize("$file")); header("content-disposition: attachment; filename=$filename"); // 다운로드되는파일명 ( 실제파일명과별개로지정가능 ) header("content-description: PHP3 Generated Data"); header("pragma: no-cache"); header("expires: 0"); $fp = fopen($file, "rb"); fpassthru($fp); fclose($fp); else { echo " 해당파일이없습니다.";?> <Vulnerability.py> # -*- coding: utf-8 -*- import socket import datetime import urllib.request import requests from bs4 import BeautifulSoup import re

45 import sys from urllib import parse from urllib.request import urlopen import time import os from fpdf import FPDF def scan(domain): module_name = "Port Scan" contents = "" is_cve = "Safe" comport = {"FTP":21, "SMTP":25,"HTTP":80 ad = domain adip = socket.gethostbyname(ad) for PN, port in comport.items(): try: s= socket.socket(socket.af_inet, socket.sock_stream) result = s.connect_ex((adip, port)) banner = s.recv(1024) if result == 0: contents += str(port)+"/tcp("+str(pn)+") Open " is_cve = "Risk" elif banner==b'': contents += str(port)+"/tcp("+str(pn)+") noservice\n" s.close() except: continue return (module_name, contents.strip(), is_cve) def adpage(domain): module_name = "Admin Page" contents = "" is_cve = "Safe" page= ["/admin", "/manager", "/master", "/system", "/administart"] url = " for pages in page: try: req = urllib.request.urlopen(url+ pages) contents += (pages + " server exist\n") is_cve = "Risk" except : continue if is_cve == "Safe": contents += "no admin page found" return (module_name, contents.strip(), is_cve)

46 def get_header(domain): global req, header, dic, cve req = requests.get(' header = req.headers dic = {'server' : 'hidden', 'os' : 'hidden', 'lang' : 'hidden' cve = {'server' : '', 'lang' : '' if 'Server' in header: server=header['server'] s = server.split(' ') for i, a in enumerate(dic.keys()): dic[a] = s[i] if (len(s) < len(dic)): break else: pass def check_cve(get_header): module_name = "Check CVE" contents = "" is_cve = "Safe" def cve1(key, contents, is_cve): r = requests.get(' soup = BeautifulSoup(r.text, 'html.parser') count_target = soup.find(class_="smaller") cve[key] = count_target.find("b").text list_result = str(soup.select("#tablewithrules")) list_result = re.sub('<.+?>','',list_result,0).strip() if len(list_result) > 26: contents += ' is_cve = "Risk" return contents, is_cve if dic['server']!= 'hidden': contents, is_cve = cve1('server', contents, is_cve) if dic['lang']!= 'hidden': contents, is_cve = cve1('lang', contents, is_cve) if contents == "": contents = "no cve found" return (module_name, contents.strip(), is_cve) def help(): print('usage:./main url') sys.exit(1) def sqlinjection(): sqlinjection_mysql = ['or 1=1--', '\' or 1=1--', '\" or 1=1--', '\' or \'1\'=\'1', '\" or \"1\"=\"1']

47 sqlinjection_oracle = ['\' or 1=1#', '\" or 1=1#', 'or 1=1#', '\' or \'1\'=\'1', '\" or \"1\"=\"1'] return sqlinjection_mysql[1] def send_post(data, next_url): is_cve = "Safe" header = { 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/ Firefox/66.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-us,en;q=0.5', 'Accept-Encoding': 'gzip, deflate', resp = requests.post(next_url, data=data, headers=header) if "Sign Off" in resp.text: is_cve = "Risk" return (is_cve) def get_domain(url): domainp = '^(https?:\/\/)?([\da-z\.-]+)' domain = re.compile(domainp).match(url).group() return domain def sqltest(url): module_name = "SQL Injection" is_cve = "Safe" url = " url + "/login.jsp" r = requests.get(url).text soup = BeautifulSoup(r, 'html.parser') tags = soup.select("form input") idp = re.compile("id=\"[a-za-z]*id[a-z]*\"") for tag in tags: try: result = idp.search(str(tag)).group() id_value = result.replace("id=", "").replace("\"", "") break except AttributeError: result = None pw_value = soup.select('form input[type=password]')[0]['name'] submit = soup.select('form input[type=submit]') submitp = re.compile("\"[a-za-z]*[l l]ogin[a-za-z]*\"") subnetname = submitp.search(str(submit)).group().replace("\"", "") tags = soup.select("form") formp = re.compile("<form action=\"[a-za-z]*[l l]ogin\"") actionvaluep = re.compile("\"[a-za-z]*\"")

48 for tag in tags: result = formp.search(str(tag)) if result!= None: action_value = actionvaluep.search(result.group()).group().replace("\"", "") domain = get_domain(url) next_url = domain + "/" + action_value data = {id_value:sqlinjection(), pw_value:'donecare' contents = str(data) send_post(data, next_url) is_cve = send_post(data, next_url) return (module_name, contents.strip(), is_cve) pages = set() def getlinks(pageurl): global pages html = urlopen(pageurl) soup = BeautifulSoup(html, "html.parser") for link in soup.findall("a"): if 'href' in link.attrs: pages.add(link.attrs['href']) if link.attrs['href'] not in pages: newpage = link.attrs['href'] pages.add(newpage) getlinks(newpage) def dicxss(url): module_name = "XSS" contents = "" is_cve = "Safe" url = " getlinks(url) lst = list(pages) dic ={ d=0 for i in lst: check = parse.urlparse(lst[int(d)]) check.geturl() if check.query: dic.update(parse.parse_qs(check.query)) d+=1-47 -

49 fname = "payloads.txt" with open(fname) as f: content = f.readlines() payloads = [x.strip() for x in content] vuln = [] for payload in payloads: for t in dic.keys(): payload = payload xss_url = url+"?"+t+"="+payload r = requests.get(xss_url) if payload.lower() in r.text.lower(): if(payload not in vuln): vuln.append(payload) else: continue if vuln: tmp_contents = "\n".join(vuln) contents += str(tmp_contents) is_cve = "Risk" return (module_name, contents.strip(), is_cve) def get_urldirectorypath(url): current_pagep = '\/[a-za-z0-9]*\.[a-za-z0-9]*$' path = re.sub(current_pagep, "", url) return path def return_souporhtml(url, str): r = requests.get(url).text soup = BeautifulSoup(r, 'html.parser') if(str=="soup"): return soup elif(str=="html"): return soup.text def regex_search(regex, str): p = re.compile(regex)

50 s = p.search(str) return s def dicrec(url): module_name = "Directory Listing" contents = "" is_cve = "Safe" c=0 url = " getlinks(url) lst = list(pages) for i in lst: toryurl = url+"/"+lst[int(c)] path = get_urldirectorypath(toryurl) html = return_souporhtml(path, "html") s = regex_search('index of /', html) if s == None: contents = "This website is \"SAFE\" from Directory listing" else: contents = path is_cve = "Risk" c+=1 return (module_name, contents.strip(), is_cve) start = datetime.datetime.now() def Westall(domain): results = [] results.append(scan(domain)) results.append(adpage(domain)) get_header(domain) results.append(check_cve(get_header)) results.append(dicrec(domain)) results.append(dicxss(domain)) results.append(sqltest(domain)) return results data = [] url = str(sys.argv[1]) uid = str(sys.argv[2]) data.extend(westall(url)) filename = "cve_log_"+uid+".pdf" title = 'Web Scan Report' finish = datetime.datetime.now() duration = finish - start class PDF(FPDF):

51 def header(self): self.set_font("arial", size=24) self.cell(200, 20, txt="website Vulnerability Scanner Report", ln=1, align="c") self.set_text_color(46,138,204) self.cell(20, 20, txt="scan Information", ln=1) self.set_line_width(1) self.set_draw_color(255, 0, 0) self.line(10, 45, 200, 45) self.set_line_width(1) self.set_draw_color(0, 0, 0) self.set_text_color(0,0,0) self.set_font("arial", size=11) self.cell(20, 5, txt="website URL = "+url, ln=1) self.cell(10,5,txt="start Time = "+str(start), ln=1) self.cell(10,5,txt="finish Time = "+str(finish), ln=1) self.cell(10,5,txt="scan duration = "+str(duration), ln=1) def footer(self): self.set_y(-15) self.set_font('arial', 'I', 8) self.set_text_color(128) self.cell(0, 10, 'Page ' + str(self.page_no()), 0, 0, 'C') def chapter_title(self, num, label): self.set_font('arial', '', 12) self.set_fill_color(200, 220, 255) self.cell(0, 6, 'Chapter %d : %s' % (num, label), 0, 1, 'L', 1) self.ln(4) def chapter_body(self, spacing=2): global data self.cell(10, 20, ln=1, align="c") self.set_font("arial", 'B', size=24) self.cell(10, 20, txt="list of tests performed (6/6)",ln=1,align="L") self.set_font("arial", 'B', size=15) self.set_draw_color(0, 0, 0) self.set_line_width(0.5) col_width = self.w / 3.3 row_height = self.font_size header = ('Type', 'Contents', 'Resulte') cellwidth =110 cellheight= 5 self.cell(40, cellheight*3, txt=header[0], border=1, align="c") self.cell(cellwidth, cellheight*3, txt=header[1], border=1, align="c") self.cell(40, cellheight*3, txt=header[2], border=1, ln=1, align="c") self.set_font("arial", size=10) for i in range(6):

52 line =1 if self.get_string_width(data[i][1]) < cellwidth: line =1 else: textlength=len(data[i][1]) errmargin = 44 startchar = 0 maxchar = 0 textarray = [] tmpstring="" st = data[i][1] while (startchar < textlength): while (self.get_string_width(tmpstring) < (cellwidth - errmargin) and (startchar+maxchar) < textlength): maxchar +=1 tmpstring = st[startchar : maxchar] startchar= startchar + maxchar textarray.append(tmpstring) line +=1 maxchar=0 tmpstring="" self.cell(40, line*cellheight, txt=data[i][0], border=1, ln=0,align = "C") x = self.get_x() y = self.get_y() self.multi_cell(cellwidth, cellheight, txt=data[i][1], border=1) self.set_xy(x+cellwidth, y) self.cell(40, line*cellheight, txt=data[i][2], border=1, ln=1,align = "C") def print_chapter(self, num, title, name): self.add_page() self.chapter_title(num, title) self.chapter_body(name) pdf = PDF() pdf.set_title(title) pdf.add_page() pdf.chapter_body() pdf.output(filename, 'F')

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 7. HTML 와 CSS 로웹사이트만들 기 웹사이트작성 웹사이트구축과정 내비게이션구조도 홈페이지레이아웃 헤더 web Shop 내비게이션메뉴

More information

하둡을이용한파일분산시스템 보안관리체제구현

하둡을이용한파일분산시스템 보안관리체제구현 하둡을이용한파일분산시스템 보안관리체제구현 목 차 - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - 1. 사용자가웹서버에로그인하여다양한서비스 ( 파일업 / 다운로드, 폴더생성 / 삭제 ) 를활용 2. 웹서버와연동된하둡서버에서업 / 다운로드된파일을분산저장. ( 자료송수신은 SSH 활용 ) - 9 - - 10 - - 11 -

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 HTML5 웹프로그래밍입문 부록. 웹서버구축하기 1 목차 A.1 웹서버시스템 A.2 PHP 사용하기 A.3 데이터베이스연결하기 2 A.1 웹서버시스템 3 웹서버의구축 웹서버컴퓨터구축 웹서버소프트웨어설치및실행 아파치 (Apache) 웹서버가대표적 서버실행프로그램 HTML5 폼을전달받아처리 PHP, JSP, Python 등 데이터베이스시스템 서버측에데이터를저장및효율적관리

More information

C H A P T E R 2

C H A P T E R 2 C H A P T E R 2 Foundations of Ajax Chapter 2 1 32 var xmlhttp; function createxmlhttprequest() { if(window.activexobject) { xmlhttp = new ActiveXObject( Micr else if(window.xmlhttprequest) { xmlhttp =

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

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

EDB 분석보고서 (04.06) ~ Exploit-DB(http://exploit-db.com) 에공개된별로분류한정보입니다. Directory Traversal users-x.php 4.0 -support-x.php 4.0 time-

EDB 분석보고서 (04.06) ~ Exploit-DB(http://exploit-db.com) 에공개된별로분류한정보입니다. Directory Traversal users-x.php 4.0 -support-x.php 4.0 time- EDB 분석보고서 (04.06) 04.06.0~04.06.0 Exploit-DB(http://exploit-db.com) 에공개된별로분류한정보입니다. 분석내용정리 ( 작성 : 펜타시큐리티시스템보안성평가팀 ) 04년 06월에공개된 Exploit-DB의분석결과, SQL 공격에대한보고개수가가장많았습니다. 이와같은결과로부터여전히 SQL 이웹에서가장많이사용되는임을확인할수있습니다.

More information

PowerPoint Template

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

More information

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용   한 수업환경구축 웹데이터베이스구축및실습 구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 http://chrome.google.com 한림대학교웹데이터베이스 - 이윤환 APM 설치 : AUTOSET6

More information

슬라이드 1

슬라이드 1 QR 코드를통한간편로그인 2018. 11. 7 지도교수 : 이병천교수님 4 조 Security-M 지승우이승용박종범백진이 목 차 조원편성 주제선정 비밀번호가뭐였지? 이런일없이조금더쉽게로그인할수있는방법은없을까? 주제선정 ID와패스워드에의한로그인방식의획기적인변화필요 문자형 ID와패스워드 QR Code 등활용 간편한타겟인식및암기식보안체계의불편극복 인증방식의간소화로다양한분야에서활용가능

More information

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF CHAPTER 2 (interaction) Ext JS., HTML, onready, MessageBox get.. Ext JS HTML CSS Ext JS.1. Ext JS. Ext.Msg: : Ext Ext.get: DOM 22 CHAPTER 2 (config). Ext JS.... var test = new TestFunction( 'three', 'fixed',

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

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

Web Scraper in 30 Minutes 강철

Web Scraper in 30 Minutes 강철 Web Scraper in 30 Minutes 강철 발표자 소개 KAIST 전산학과 2015년부터 G사에서 일합니다. 에서 대한민국 정치의 모든 것을 개발하고 있습니다. 목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 스크래퍼/크롤러의 작동 원리를 이해한다. 목표

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

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

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

More information

Week13

Week13 Week 13 Social Data Mining 02 Joonhwan Lee human-computer interaction + design lab. Crawling Twitter Data OAuth Crawling Data using OpenAPI Advanced Web Crawling 1. Crawling Twitter Data Twitter API API

More information

PHP & ASP

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

More information

SK Telecom Platform NATE

SK Telecom Platform NATE SK Telecom Platform NATE SK TELECOM NATE Browser VER 2.6 This Document is copyrighted by SK Telecom and may not be reproduced without permission SK Building, SeRinDong-99, JoongRoGu, 110-110, Seoul, Korea

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

2009년 상반기 사업계획

2009년 상반기 사업계획 웹 (WWW) 쉽게배우는데이터통신과컴퓨터네트워크 학습목표 웹서비스를위한클라이언트 - 서버구조를살펴본다. 웹서비스를지원하는 APM(Apache, PHP, MySQL) 의연동방식을이해한다. HTML 이지원하는기본태그명령어와프레임구조를이해한다. HTTP 의요청 / 응답메시지의구조와동작원리를이해한다. CGI 의원리를이해하고 FORM 태그로사용자입력을처리하는방식을알아본다.

More information

PART 1 CHAPTER 1 Chapter 1 Note 4 Part 1 5 Chapter 1 AcctNum = Table ("Customer").Cells("AccountNumber") AcctNum = Customer.AccountNumber Note 6 RecordSet RecordSet Part 1 Note 7 Chapter 1 01:

More information

Microsoft PowerPoint Python-WebDB

Microsoft PowerPoint Python-WebDB 8. 웹과데이터베이스연결응용 순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 학습내용 파이썬과데이터베이스연결 웹과데이터베이스연결 로그인페이지예 순천향서핑대회예 순천향대학교컴퓨터공학과 2 파이썬과 SQLite3 연결 sqlite3 모듈을사용하여파이썬과 SQLite3 데이테베이스연동프로그램작성 데이터베이스연결을오픈, 종료및내보내기 sqlite3.connect(filename)

More information

2파트-07

2파트-07 CHAPTER 07 Ajax ( ) (Silverlight) Ajax RIA(Rich Internet Application) Firefox 4 Ajax MVC Ajax ActionResult Ajax jquery Ajax HTML (Partial View) 7 3 GetOrganized Ajax GetOrganized Ajax HTTP POST 154 CHAPTER

More information

쉽게 풀어쓴 C 프로그래밊

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

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

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks XSS s XSS, s, May 25, 2010 XSS s 1 2 s 3 XSS s MySpace 사건. Samy (JS.Spacehero) 프로필 페이지에 자바스크립트 삽입. 스크립트 동작방식 방문자를 친구로 추가. 방문자의 프로필에 자바스크립트를 복사. 1시간 만에 백만 명이 친구등록. s XSS s 위험도가 낮은 xss 취약점을 다른 취약점과 연계하여

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 파이썬을이용한빅데이터수집. 분석과시각화 Part 2. 데이터시각화 이원하 목 차 1 2 3 4 WordCloud 자연어처리 Matplotlib 그래프 Folium 지도시각화 Seabean - Heatmap 03 07 16 21 1 WORDCLOUD - 자연어처리 KoNLPy 형태소기반자연어처리 http://www.oracle.com/technetwork/java/javase/downloads/index.html

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS

INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS 개발자에게넘겨주기편한 TABLE&FORM 마크업 김남용 INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS 들어가기 이제는 ~ 서로간의이슈웹표준 & 웹접근성왜웹표준으로해야할까요? 모든웹페이지는 ~ 퍼블리싱순서 이제는 ~ 디자이너 디자이너 퍼블리셔 Front-end (UI 개발자 ) 퍼블리셔 Front-end (UI 개발자 ) 서버개발자 서버개발자

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 프레젠테이션 실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)

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

Javascript.pages

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

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 10. DOM 과이벤트처리, 입력검 증 문서객체모델 (DOM) DOM 은 HTML 문서의계층적인구조를트리 (tree) 로표현 DOM 과 BOM HTML 문서를객체로표현한것을 DOM 웹브라우저를객체로표현한것을 BOM(Browser Object Model) HTML 요소찾기 동적인웹페이지를작성하려면원하는요소를찾아야한다. id 로찾기 태그이름으로찾기

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

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O Orange for ORACLE V4.0 Installation Guide ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE...1 1....2 1.1...2 1.2...2 1.2.1...2 1.2.2 (Online Upgrade)...11 1.3 ORANGE CONFIGURATION ADMIN...12 1.3.1 Orange Configuration

More information

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

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

PowerPoint Presentation

PowerPoint Presentation WordPress 를이용한웹사이트만들기 2015 년 한지웅 WordPress 를이용한웹사이트만들기 Day 1 Day 2 Day 3 Day 4 Day 5 1. 웹사이트제작기초 HTLM 기본 CSS 기본 WordPress 개론 ( 웹사이트구축툴 ) 2. 웹호스팅 / 웹사이트구축 웹호스팅업체선택 cpanel 설정 WordPress 설치 3. WordPress 기초활용

More information

<3035303432365FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

<3035303432365FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770> 개 요 홈페이지 해킹 현황 및 사례 홈페이지 개발시 보안 취약점 및 대책 주요 애플리케이션 보안 대책 결 론 참고자료 [부록1] 개발 언어별 로그인 인증 프로세스 예제 [부록2] 대규모 홈페이지 변조 예방을 위한 권고(안) [부록3] 개인정보의 기술적 관리적 보호조치 기준(안) [부록4] 웹 보안관련 주요 사이트 리스트 7000 6,478 6000 5000

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 ONE page html 이란? 원페이지는최근의홈페이지제작트렌드로한페이지에상단에서하단으로의마우스스크롤링을통해서컨텐츠를보여주는스타일의홈페이지입니다. USER 의시선을분산시키지않고위쪽에서아래쪽으로마우스스크롤링을통해서홈페이지의컨텐츠를보여주게됩니다. 반응형으로제작되어스마트폰, 아이패드, 태블릿,PC, 노트북등다양한디바이스에서자동으로최적화됩니다. ONE page 웹사이트사례

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

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

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

0. 들어가기 전

0. 들어가기 전 컴퓨터네트워크 14 장. 웹 (WWW) (3) - HTTP 1 이번시간의학습목표 HTTP 의요청 / 응답메시지의구조와동작원리이해 2 요청과응답 (1) HTTP (HyperText Transfer Protocol) 웹브라우저는 URL 을이용원하는자원표현 HTTP 메소드 (method) 를이용하여데이터를요청 (GET) 하거나, 회신 (POST) 요청과응답 요청

More information

BEef 사용법.pages

BEef 사용법.pages 1.... 3 2.... 3 (1)... 3 (2)... 5 3. BeEF... 7 (1) BeEF... 7 (2)... 8 (3) (Google Phishing)... 10 4. ( )... 13 (1)... 14 (2) Social Engineering... 17 (3)... 19 (4)... 21 5.... 22 (1)... 22 (2)... 27 (3)

More information

C스토어 사용자 매뉴얼

C스토어 사용자 매뉴얼 쪽지 APP 디자인적용가이드 I. 쪽지 APP 소개 2 I. 쪽지 APP 소개 쪽지 APP 을통해쇼핑몰의특정회원또는특정등급의회원그룹에게 알림메시지나마케팅을위한쪽지를발송하실수있습니다. 쪽지 APP의주요기능 1. 전체회원, 특정ID, 특정회원그룹별로쪽지발송가능 2. 발송예약기능 3. 발송한쪽지에대해수신및열람내역조회가능 4. 쇼핑몰페이지에서쪽지함과쪽지알림창제공 3

More information

MySQL-Ch05

MySQL-Ch05 MySQL P A R T 2 Chapter 05 Chapter 06 Chapter 07 Chapter 08 05 Chapter MySQL MySQL. (, C, Perl, PHP),. 5.1 MySQL., mysqldump, mysqlimport, mysqladmin, mysql. MySQL. mysql,. SQL. MySQL... MySQL ( ). MySQL,.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Html 은웹에서 text, images, movie 등다양한정보의요소를 담을수있는문서형식이다. 정보 (txt, imges) 전송 = 동일한어플리케이션 = 정보 (txt, imges) 정보 (txt, imges Movie, 동작 ) 정보 (txt, imges movie) 어플리케이션 웹브라우저 HTML5 는기존 HTML 에차별화된특징을가진 최신버전의웹표준언어.

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

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-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 학습목표 프로그래밍의 기본 개념을

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

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

Observational Determinism for Concurrent Program Security

Observational Determinism for  Concurrent Program Security 웹응용프로그램보안취약성 분석기구현 소프트웨어무결점센터 Workshop 2010. 8. 25 한국항공대학교, 안준선 1 소개 관련연구 Outline Input Validation Vulnerability 연구내용 Abstract Domain for Input Validation Implementation of Vulnerability Analyzer 기존연구

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 13. HTML5 위치정보와드래그앤드롭 SVG SVG(Scalable Vector Graphics) 는 XML- 기반의벡터이미지포맷 웹에서벡터 - 기반의그래픽을정의하는데사용 1999 년부터 W3C 에의하여표준 SVG 의장점 SVG 그래픽은확대되거나크기가변경되어도품질이손상되지않는다. SVG 파일에서모든요소와속성은애니메이션이가능하다. SVG 이미지는어떤텍스트에디터로도생성하고편집할수있다.

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

14-Servlet

14-Servlet JAVA Programming Language Servlet (GenericServlet) HTTP (HttpServlet) 2 (1)? CGI 3 (2) http://jakarta.apache.org JSDK(Java Servlet Development Kit) 4 (3) CGI CGI(Common Gateway Interface) /,,, Client Server

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

AMP는 어떻게 빠른 성능을 내나.key

AMP는 어떻게 빠른 성능을 내나.key AMP는 어떻게 빠른 성능을 내나? AU개발 김태훈 kishu@navercorp.com AMP 란무엇인가? AMP 방식으로 HTML을 만들고 AMP JS를 로딩하고 AMP 컴포넌트만 사용하면 웹페이지의 빠른 렌더링을 보장 + 구글 검색 결과에서 즉시 로딩(빠르고 멋있게) AMPs are just Web Pages! AMPs are just Web Pages!

More information

<4D6963726F736F667420506F776572506F696E74202D2030342E20C0CEC5CDB3DD20C0C0BFEB20B9D720BCADBAF1BDBA20B1E2BCFA2831292E70707478>

<4D6963726F736F667420506F776572506F696E74202D2030342E20C0CEC5CDB3DD20C0C0BFEB20B9D720BCADBAF1BDBA20B1E2BCFA2831292E70707478> 웹과 인터넷 활용 및실습 () (Part I) 문양세 강원대학교 IT대학 컴퓨터과학전공 강의 내용 전자우편(e-mail) 인스턴트 메신저(instant messenger) FTP (file transfer protocol) WWW (world wide web) 인터넷 검색 홈네트워크 (home network) Web 2.0 개인 미니홈페이지 블로그 (blog)

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

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

4? [The Fourth Industrial Revolution] IT :,,,. : (AI), ,, 2, 4 3, : 4 3.

4? [The Fourth Industrial Revolution] IT :,,,. : (AI), ,, 2, 4 3, : 4 3. 2019 Slowalk 4? [The Fourth Industrial Revolution] IT :,,,. : (AI),. 4 2016 1 20,, 2, 4 3, : 4 3. 2 3 4,,,, :, : : (AI, artificial intelligence) > > (2015. 12 ) bot (VR, virtual reality) (AR, augmented

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Internet Page 8 Page 9 Page 10 Page 11 Page 12 1 / ( ) ( ) / ( ) 2 3 4 / ( ) / ( ) ( ) ( ) 5 / / / / / Page 13 Page 14 Page 15 Page 16 Page 17 Page 18 Page

More information

Microsoft PowerPoint 세션.ppt

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

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

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 14. HTML5 웹스토리지, 파일 API, 웹소켓 웹스토리지 웹스토리지 (web storage) 는클라이언트컴퓨터에데이터를저장하는메카니즘 웹스토리지는쿠키보다안전하고속도도빠르다. 약 5MB 정도까지저장이가능하다. 데이터는키 / 값 (key/value) 의쌍으로저장 localstorage 와 sessionstorage localstorage 객체

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

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드] GUI 설계 6 주차 DB 연동김문정 tops@yd.ac.kr 강의순서강의전환경 JDK 설치및환경설정톰캣설치및환경설정이클립스 (JEE) 설치및환경설정 MySQL( 드라이버 ) 설치및커넥터드라이브연결 DB 생성 - 계정생성이클립스에서 DB에연결서버생성 - 프로젝트생성 DB연결테이블생성및등록 2 MySQL 설치확인 mysql - u root -p MySQL 에데이터베이스추가

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

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

인도 웹해킹 TCP/80 apache_struts2_remote_exec-4(cve ) 인도 웹해킹 TCP/80 apache_struts2_remote_exec-4(cve ) 183.8

인도 웹해킹 TCP/80 apache_struts2_remote_exec-4(cve ) 인도 웹해킹 TCP/80 apache_struts2_remote_exec-4(cve ) 183.8 차단 IP 국적 공격유형 목적지포트 IPS 룰 222.119.190.175 한국 서비스취약점공격 TCP/110 #14713(POP3 Login Brute Force Attempt-2/3(count 30 seconds 10)) 52.233.160.51 네덜란드 웹해킹 TCP/80 Apache Struts Jakarta Multipart Parser Remote

More information

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용 Oracle hacking 작성자 : 임동현 (ddongsbrk@naver.com) 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용 Skill List 1. Oracle For Pentest 1. Find TNS Listener (Default 1521 port) (with nmap or amap) 2. Get the

More information

Overall Process

Overall Process CSS ( ) Overall Process Overall Process (Contents : Story Board or Design Source) (Structure : extensible HyperText Markup Language) (Style : Cascade Style Sheet) (Script : Document Object Model) (Contents

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

EDB 분석보고서 (0.0) 0.0.0~0.0. Exploit-DB( 에공개된별로분류한정보입니다. 날짜 EDB 번호분류공격난이도공격위험도이름핵심공격코드대상프로그램대상환경 SQL Injection 중상 Absolu

EDB 분석보고서 (0.0) 0.0.0~0.0. Exploit-DB(  에공개된별로분류한정보입니다. 날짜 EDB 번호분류공격난이도공격위험도이름핵심공격코드대상프로그램대상환경 SQL Injection 중상 Absolu EDB 분석보고서 (0.0) 0.0.0~0.0. Exploit-DB(http://exploit-db.com) 에공개된별로분류한정보입니다. 분석내용정리 ( 작성 : 펜타시큐리티시스템보안성평가팀 ) 0 년 월에공개된 Exploit-DB 의분석결과, 잘알려진웹공격인 SQL Injection 과 XSS(Cross Site Scripting) 공격에대한보고가가장많았습니다.

More information

LXR 설치 및 사용법.doc

LXR 설치 및 사용법.doc Installation of LXR (Linux Cross-Reference) for Source Code Reference Code Reference LXR : 2002512( ), : 1/1 1 3 2 LXR 3 21 LXR 3 22 LXR 221 LXR 3 222 LXR 3 3 23 LXR lxrconf 4 24 241 httpdconf 6 242 htaccess

More information

04장

04장 20..29 1: PM ` 199 ntech4 C9600 2400DPI 175LPI T CHAPTER 4 20..29 1: PM ` 200 ntech4 C9600 2400DPI 175LPI T CHAPTER 4.1 JSP (Comment) HTML JSP 3 home index jsp HTML JSP 15 16 17 18 19 20

More information

Lab1

Lab1 Lab 1: HTML CSS 2015 Fall human-computer interaction + design lab. Joonhwan Lee HTML Web Server (World Wide Web: WWW)? (., FTP ). web 3 웹 구조의 이해 웹페이지 웹페이지는 HTML 이라는 언어로 만들어진 일종의 프로그램 웹페이지는 텍스트, 이미지, 동영상,

More information

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments

More information

Microsoft PowerPoint Python-Web.pptx

Microsoft PowerPoint Python-Web.pptx 순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 학습내용 WWW, HTTP, HTML 아파치웹서버 HTML 문서 CGI 프로그래밍 순천향대학교컴퓨터공학과 2 World Wide Web WWW HTTP 프로토콜을이용하여 HTML 문서를전달 웹서버 (Web Server) : Apache, IIS, Nginx, Lighttpd 등 웹브라우저 (Web Browser

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 SECUINSIDE 2017 Bypassing Web Browser Security Policies DongHyun Kim (hackpupu) Security Researcher at i2sec Korea University Graduate School Agenda - Me? - Abstract - What is HTTP Secure Header? - What

More information

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2. 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2. 3Rabbitz Book 애플리케이션파일다운로드하여압축파일을풀고복사합니다. 3. 3Rabbitz Book 실행합니다.

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

歯sql_tuning2

歯sql_tuning2 SQL Tuning (2) SQL SQL SQL Tuning ROW(1) ROW(2) ROW(n) update ROW(2) at time 1 & Uncommitted update ROW(2) at time 2 SQLDBA> @ UTLLOCKT WAITING_SESSION TYPE MODE_REQUESTED MODE_HELD LOCK_ID1

More information

Microsoft Word - Windows_apahce_php_CUBRID2008

Microsoft Word - Windows_apahce_php_CUBRID2008 Windows 에서 Apache, PHP 를이용하여 CUBRID 사용하기 소개 : Windows 환경에서 Apache 웹서버와 PHP 를이용하여 CUBRID 를사용하기위하여 PHP CUBRID module 를 설치하는방법및간단한 CUBRID 연동방법을소개한다. 연동에대한상세한방법은매뉴얼상의 PHP API 부분을 참고하기바란다 2008-10-20 기술컨설팅팀남재우,

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

Cookie Spoofing.hwp

Cookie Spoofing.hwp Cookie Spoofing&Sniffing By Maxoverpro[max]( 장상근) maxoverpro@empal.com http://www.maxoverpro.org 1. 서론 이문서는 Cookie Spoofing 과 Sniffing 에대해정석적인방법을이야기하도록하며또 한어느특정곳의취약점을설명하지않고직접제작한예제를가지고 Cookie Spoofing 과

More information

Javascript

Javascript 1. HTML 이란? HTML 은 Hyper Text Mark Up Language 의약자로예약되어있는각종태그라는명령어를이용하여웹페이지를작성할때사용하는언어입니다. 2. HTML 의기본구조 < 태그 > 내용 < 태그속성 = 변수 > 내용

More information

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ] 품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ] 2014. 10. 목 차 I. Stack 통합테스트개요 1 1. 목적 1 II. 테스트대상소개 2 1. The Bug Genie 소개 2 2. The Bug Genie 주요기능 3 3. The Bug Genie 시스템요구사항및주의사항 5 III. Stack 통합테스트 7 1. 테스트환경

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 PHP 와 MySQL 의연동 Jo, Heeseung Content MySQL을지원하는 PHP API 함수 과변수값전달 DB 테이블생성과데이터읽기성적관리프로그램제작 2 1.2 DB 테이블생성과레코드삽입 데이터베이스테이블구조설계 [ 표 7-1] 명함관리데이터베이스테이블 ( 테이블명 : biz_card) 필드명 타입 추가사항 설명 num int primary

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 How to produce table XHTML 임정희 M2community 1 Table of Contents 1. XHTML - XHTML 과 HTML 2. Table XHTML - Table의이해 - Table 링크연결 - Table 작성 2 15 th KCSE Editor s Workshop, Seoul 2015 XHTML XHTML 기존에사용되던 HTML

More information