본문 바로가기
정보보안/모의해킹

모의해킹 강의 4

by 뭔가해보겠습니다 2024. 10. 16.

모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1

강의주소 :  https://www.inflearn.com/course/sql-injection-secure-coding-1/dashboard

 

인증 우회 공격이란?
정상적인 아이디가 아닌 sql 구문 삽입을 통해 인증을 우회하는 것 (ex 로그인 기능 우회)

예시)
' or 1=1 -- 같은 구문으로 우회할 경우
모든 레코드가 반환되어 첫 번째 레코드 정보로 로그인 처리 될 수 있다

인증 기능
: 식별가능한 id, pw 등을 입력하여 인가된 사용자만이 시스템을 이용할 수 있도록 함

 

 

 

php 기반 로그인 기능 제작
경로 : C:\APM_Setup\htdocs\login
파일 : index. login, loginAction, logout php 파일

loginAction.php 

$pw = md5($_POST["pw"]);
$db_conn = new mysqli("localhost", "root", "1234", "login_example");
$tmp = $db_conn -> query($query);
$cnt = $tmp -> num_rows;
$user = $tmp -> fetch_assoc();
 
대충 중요한 부분은 이정도인듯
 

unset($_SESSION["id"]);     # 세션 변수값 삭제
session_destroy();          # 세션 폐기

 

중요한 부분. 나머지는 어렵지 않아서 패스함

 

C:\Users\user>mysql -u root -p

cmd에서 접속

 

mysql> create database login_example;
Query OK, 1 row affected (0.01 sec)
mysql> use login_example;
Database changed
mysql> create table member(id varchar(30), pw varchar(60));
Query OK, 0 rows affected (0.01 sec)
mysql> select * from member;
Empty set (0.00 sec)
mysql> insert into member values('admin', md5('1234'));
mysql> insert into member values('guest', md5('guest'));

 

mysql의 경우 database부터 생성, use로 사용선언하고 create table하여 insert into 레코드 추가

 

 

진행중에 계속 로그인이 안되었는데 md5 해주는 부분을 빼먹은 것 ... ㅠㅠ 

기타 참고할만한 블로그 : https://inpa.tistory.com/entry/PHP-%F0%9F%93%9A-DB-%EB%8B%A4%EB%A3%A8%EA%B8%B0-mysqli-%EB%B0%A9%EC%8B%9D

 

 

인증우회
1) 아이디를 알고 있을 경우 : In-line
admin' or '1'=' 삽입

비밀번호를 일부러 틀리게 입력했음에도, 정상적으로 연결되어 id와 pw 정보를 얻을 수 있었다 (일부러 echo로 찍어봤음)

 

Terminating의 경우 admin'-- 삽입

근데... 왜 안되는거지... mysql에서 직접 select * from member where id='admin'--; 조회해보면 나오는데 어플리케이션에서는 안나와서 영문을 모르겠다

 

Fatal error</b>:  Call to a member function fetch_assoc() on a non-object in <b>C:\APM_Setup\htdocs\login\loginAction.php

 

?_? 강사님께 질문 남겨놨다

 

 

2) 아이디를 모를 경우 : Terminating

강의 정답을 보고 왜 복잡하게 하지
' or 1=1 이렇게 넣으면 되지 않나? 라고 생각해서 테스트해보니

'select * from member where id='' or 1=1' and pw='값''
싱글쿼터가 있어서 닫아주어야 한다

' or 1=1 or '1'='1 요렇게 넣어야 인증우회 성공

 

 

' or 1=1--

이것도... 에러가 난다. 어째서냐... 주석 -- 을 공통적으로 무시해버린다는 느낌이 드는중;

 

 

'정보보안 > 모의해킹' 카테고리의 다른 글

모의해킹 강의 5  (0) 2024.10.18
모의해킹 강의 3  (0) 2024.10.15
모의해킹 강의 2  (0) 2024.10.14
모의해킹 강의 1  (0) 2024.10.10