web vulnerability seminar2

Post on 15-Feb-2017

273 Views

Category:

Art & Photos

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Web vulnerability seminar

from make to exploit(Login with Database)

Contents$ Homework Solution$ Database?$ Manage Database$ Flowchart

Login page?$ 어떤 형식이건 값을 저장$ User 의 입력과 해당 값이 맞는지 비교

Login page (binary) int main(){

char* id = (char*)malloc(20);char* pw = (char*)malloc(20);scanf(“%s”,&id);scanf(“%s”,&pw);if(id == “admin” && pw == “admin”)printf(“Welcome!!\n”);elseprintf(“Not accept.\n”);return 0;

}

Login page<?

$id = "justlife3";$pass = "password";if($id == $_GET[id] && $pass == $_GET[pw])echo "Hello!";else echo "You are not justlife3";

?>

Login page (file)int main(){

FILE* f = fopen(“./account”,”r”);char * data;fseek(f, 0, SEEK_END);int file_size = ftell(f);fseek(f, 0, SEEK_SET);

data = (char*)malloc(file_size);fread(data,1,file_size,f);… 이후 비교

}

DBColumn

Table

Row

DB

기본 패스워드 : apmsetup

mysql –uroot -p

Default password 극혐$ UPDATE mysql.user SET

password=passowrd(‘ 사용할암호’ ) WHERE user=‘root’

$ 뜻을 알건 모르건 일단 바꾸고 봅시다 ..

DB$ 어떤 db 가 있나 보자

> show databases;

$ db 를 사용하기 위해 선택하자 .> use database_name

>ex) use mysql;

내 DB 만들기$ CREATE DATABASE db_name

> CREATE DATABASE webhacking;

$ CREATE TABLE table_name(column name type option,…)> CREATE TABLE member(

user_id varchar(20) NOT NULL,user_pw varchar(20) NOT NULL,nickname varchar(20),PRIMARY KEY(user_id));

값을 넣어보자 .$ INSERT INTO tablename values(a1,a2..);

> INSERT INTO account values(‘sakuya’,’1234’,’SAKUYA’);

$ INSERT INTO tablename(c1,c2..) values(a1,a2..);

> INSERT INTO member(user_id, user_pw, nickname) value(‘sakuya’,1234 , user_id);

연달아서 입력$ INSERT INTO member values

('sakuya','1234','SAKUYA'),('fear2fear','4321','131ackcon'),('commio0','bluebit','redbit'),('python','URYY',user_id),('ruby',abs(-1234),'sapphire');

$ 함수 , 컬럼도 가능함$ Mysql 주석 : #, --, /**/

조회$ SELECT column FROM tablename

WHERE condition> SELECT nickname FROM member WHERE

user_id=‘sakuya’;

$ SELECT * FROM tablename WHERE contidion> SELECT * FROM member WHERE

user_id=‘sakuya’;

결과

가입 페이지 만들기$ 가입 페이지의 개략적인 형태<?include ‘db_conn.php’

$inp_id = $_POST[id];$inp_pw= $_POST[pw];$inp_nick = $_POST[nick];

//Send to Mysql$query = ‘INSERT INTO account values(‘.$inp_id.’,’.$inp_pw.’,’.$inp_nick.’)’

?>

Login page<?

$f = fopen(“./account”,”r”);$data = fread($f,filesize($f));$idx = strpos($data,$_GET[‘id’]);if($idx !== true)echo “Not Exist.”;else{if(parsing and compare)echo “HIHIHI”;

}?>

PHP + SQL!<?

$ip = "127.0.0.1"; // 혹은 접속할 주소$user = "root";$pass = “db_pass";$db = "webhacking";$conn = @mysql_connect($ip,$user,$pass);$dbs = @mysql_select_db($db);

?>

db_conn.php

로그인 페이지 만들기$ 로그인 페이지의 개략적인 형태<?include ‘db_conn.php’

$inp_id = $_GET[id];$inp_pw= $_GET[pw];

$query = ‘SELECT * FROM account WHERE user_id =’.$inp_id.’ and ‘.$inp_pw;$row =mysql_fetch_array(mysql_query($query,$conn))if($row)echo “Hello, ”$row[user_id];else echo “Who are you?”

?>

$rowmysql_fetch_array?

$row = array(‘user_id’ =>’1’‘user_pw’ => ‘2’‘nickname’ =>’3’);

$row = array(‘1’,’2’,’3’);

PHP array = Python dictionary + list

PHP??

프로그램 !int main(){

if(login())printf(“HELLO!”);

elseprintf(“NO..”);

}

웹 사이트에 들어갈때int main(){

if(login())printf(“HELLO!”);

elseprintf(“NO..”);

}

유저에게 입력을 받자 .$ GET$ POST$ COOKIE…

GET$ GET

페이지 ? 변수 1= 값 & 변수 2= 값./program 1 test

GET 예제<?

$user_input = $_GET[inp];echo “Hello! ”.$user_input;

?>

Example

<?$post_value = $_POST[‘ID’];echo $post_value;

?>

POST 로 보내기 ?$ 복잡한걸 손으로 직접쓰기$ 폼 형태를 사용<form action=‘index.php‘ method='POST' ><input type=‘text' name=‘value'></form>

추후 있을 문제를 통해서 이야기 하도록 합시다 !

Cookie$ 웹서버에 접근한 흔적

> 사용자가 누구인지 ..

$ 주로 서버에서 세팅해 주는 경우가 많음 .

$ 웹 서버마다 다른 값을 가짐 !

Cookie 확인 방법

Cookie 변경방법

웹 사이트에 들어갈때http://facebook.com/login.php?id=admin&pw=admin1234

if…http://facebook.com/login.php?id=admin’&pw=admin1234

이상한 점 ? 예상되는 결과 ?

Injection?

그래서 ?

결론$ 무언가의 양식에 맞춰서 원하는 값을 넣는 것 .

$ SQL injection => SQL 구문에 맞게$ HTTP Header injection => HTTP 에 맞게$ Mail Header injection => Header 에 맞게

과제각자 만든 로그인 페이지 ( 혹은 게시판 ) 에 Injection 공격을 성공 시킬 것 .

-php.ini 파일의 magic_quote_gpc 의 옵션을 off 로 하고 실습할 것 .

+ injection 방지 방법 및 우회방법 조사5/17 23:59 까지 sakuya9461@gmail.com

top related