반응형
사이트 : 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); // 데이터베이스 연결 종료
?>
웹해킹을 위한 준비 끝!
웹해킹 내용은 아래 클릭
반응형
'요즘공부' 카테고리의 다른 글
CLASS101 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문 강의 공부4 (1) | 2024.12.15 |
---|---|
CLASS101 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문 강의 공부2 (1) | 2024.12.14 |
CLASS101 화이트햇 해킹, IT 취준생과 현직개발자를 위한 웹 해킹 입문 강의 공부1 (0) | 2024.12.09 |