본문 바로가기
요즘공부

CLASS101 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문 강의 공부3

by 게으른 피글렛 2024. 12. 14.
반응형

사이트 : CLASS 101 

강의명 : 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문

 

공부 내용

2. 서버구축

1) Ubuntu 설치

Ubuntu 다운로드 : https://ubuntu.com/download/server

VMware 다운로드 : VMware Workstation Pro: Now Available Free for Personal Use - VMware Workstation Zealot

 

VMware를 설치 후 VMware에서 Ubuntu를 설치하면 가상머신안에 설치가 가능함 

 

 

2) Settings

apach2 : 웹사이트 구성

php: 서버 측 스크립트 언어로서, 동적 웹 페이지를 생성하고 서버에서 실행

mysql-server : database

#apach2, php, mysql-server 설치
$ sudo apt install apach2 php mysql-server

#apach2와 php 연결프로그램, php와 mysql 연결 프로그램설치
$ sudo apt install libapach2-mod-php php-mysql

 

 

< 설치 여부 확인하는 방법 >

 - apach2 설치 확인 : 리눅스 firefox에서 http://127.0.0.1 이동

 

 

 - php 설치 확인 : test.php 파일 생성 후 firefox에서 http://127.0.0.1/test.php 이동

 

 

$ cd /var/www/html
$ sudo vi test.php

# vi편집기에서 아래 내용 입력 후 저장(:wq!)
<?php phpinfo(); ?>

 

 

 - mysql 설치 확인 

#mysql 접근 명령어
$ sudo mysql

 

나가기는 exit

 

3) 웹해킹에 필요한 html 생성

- login.html 생성 -> firefox에서 확인

ubuntu@ubuntu-VMware-Virtual-Platform:~$ cd /var/www/html
ubuntu@ubuntu-VMware-Virtual-Platform:/var/www/html$ sudo vi login.html

 

 

# login.html에 아래 내용 입력 후 저장

<html>
	<head>
	</head>

	<body>
		<form method="GET" action="login.php">
			ID : <input type="text" name="id_box"><br>
			PW : <input type="password" name="pw_box"><br>
			<input type="submit" value="LOGIN">
		</FORM>
	</body>
</html>

 

생성된 내용이 확인가능

 

 

4) 데이터베이스 생성

- MYSQL에 데이터 입력

# mysql 접속
ubuntu@ubuntu-VMware-Virtual-Platform:~$ sudo mysql

# login이라는 DB생성
mysql> create database login;
Query OK, 1 row affected (0.00 sec)

# 생성내역보여줌
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| login              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.02 sec)

#login DB로 접속
mysql> use login;
Database changed

# table 생성
# text는 id가 문구라는 의미인데, 상황에 따라 숫자일 경우 int 등으로 변경될수있음
mysql> create table user(id text, pw text);
Query OK, 0 rows affected (0.04 sec)

mysql> show tables;
+-----------------+
| Tables_in_login |
+-----------------+
| user            |
+-----------------+
1 row in set (0.00 sec)

# 생성된 table 값입력
mysql> insert into user(id,pw) values('test','test');
Query OK, 1 row affected (0.02 sec)

# table에서 값을 검색할 경우 아래와 같이 select 명령어를 사용해야함
mysql> select id,pw from user where id='test';
+------+------+
| id   | pw   |
+------+------+
| test | test |
+------+------+
1 row in set (0.00 sec)

# 잘못된 값을 넣을 경우
mysql> select id,pw from user where id='aaa';
Empty set (0.00 sec)

 

- MYSQL에 데이터 삭제

# pw=test 삭제
mysql> delete from user where pw='test';
Query OK, 1 row affected (0.00 sec)

# user 내용 확인
mysql> select id,pw from user;
Empty set (0.00 sec)

# user table 삭제
mysql> drop table user;
Query OK, 0 rows affected (0.01 sec)

# user table 확인
mysql> show tables;
Empty set (0.00 sec)

# login DB 삭제
mysql> drop database login;
Query OK, 0 rows affected (0.03 sec)

# login DB 확인
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

 

- DB 생성 결과

mysql> select id,pw from user;
+-------+----------+
| id    | pw       |
+-------+----------+
| test  | test     |
| mskim | 123456   |
| admin | admin123 |
+-------+----------+
3 rows in set (0.00 sec)

 

- 웹사이트 전용 mysql 계정생성(php에 사용)

 

# mysql의 webhacking 계정 생성 - 웹사이트용
mysql> create user 'webhacking'@localhost identified by 'webhacking';
Query OK, 0 rows affected (0.01 sec)

# mysql의 webhacking 계정 생성 확인
mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| webhacking       | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

# mysql의 webhacking 계정에 login DB에 대한 모든 권한 부여
# SELECT, INSERT, UPDATE, DELETE 등 모든 권한이 포함
mysql> grant all privileges on login.* to 'webhacking'@localhost;
Query OK, 0 rows affected (0.01 sec)

# mysql의 webhacking 계정에 login DB 권한 확인
mysql> show grants for 'webhacking'@'localhost';
+---------------------------------------------------------------+
| Grants for webhacking@localhost                               |
+---------------------------------------------------------------+
| GRANT USAGE ON *.* TO `webhacking`@`localhost`                |
| GRANT ALL PRIVILEGES ON `login`.* TO `webhacking`@`localhost` |
+---------------------------------------------------------------+
2 rows in set (0.00 sec)

 

 

5) 생성한 login.html과 DB를 php를 사용하여 연결

<?php
// 사용자로부터 GET 방식으로 입력받은 값을 변수에 저장
$id = $_GET['id_box'];   // id_box 파라미터를 $id 변수에 저장
$pw = $_GET['pw_box'];  // pw_box 파라미터를 $pw 변수에 저장

// MySQL 데이터베이스에 연결
$db_conn = mysqli_connect("127.0.0.1", "webhacking", "webhacking", "login");

// 데이터베이스 연결 실패 시 오류 메시지를 출력하고 종료
if(!$db_conn) {
    echo mysqli_connect_error();  // 연결 실패 시 MySQL 오류 메시지 출력
    exit();  // 연결 실패 시 스크립트 종료
}

// 사용자로부터 입력받은 id와 pw 값을 사용하여 쿼리 작성
$query = "select id from user where id='" . $id . "' and pw='" . $pw . "'";

// 쿼리 실행
$result = mysqli_query($db_conn, $query);

// 실행된 쿼리 출력 (디버깅용)
echo "query : " . $query . "<br>";

// 쿼리 실행 결과가 존재하는 경우
if($result) {
    // 쿼리 결과에서 한 행을 가져와서 id 값 출력
    if($row = mysqli_fetch_assoc($result)) {
        echo "id = ".$row['id'];  // 로그인 성공 시 id 출력
    } else {
        echo "login failed";  // 일치하는 사용자 정보가 없을 경우 로그인 실패 메시지 출력
    }

    // 결과 집합 메모리 해제
    mysqli_free_result($result);  // 메모리에서 결과 집합을 해제
} else {
    // 쿼리 실행에 실패한 경우
    echo "query error";  // 쿼리 오류 메시지 출력
}

// 데이터베이스 연결 종료
mysqli_close($db_conn);  // 데이터베이스 연결 종료
?>

 

웹해킹을 위한 준비 끝!

 

 

웹해킹 내용은 아래 클릭

 

CLASS 101 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문 강의 공부4

사이트 : CLASS 101 강의명 : 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문 공부 내용3. 웹해킹1) OWASP TOP10 알아보기사이트 : https://sucuri.net/RESOURCES -> GUIDE -> OWASP Top Security Risks

piglet8.com

 

 

반응형