모의해킹 실무자가 알려주는, 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
중요한 부분. 나머지는 어렵지 않아서 패스함
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--
이것도... 에러가 난다. 어째서냐... 주석 -- 을 공통적으로 무시해버린다는 느낌이 드는중;
'정보보안 > 모의해킹' 카테고리의 다른 글
모의해킹 강의(SQL Injection Part1) 6 (0) | 2024.10.21 |
---|---|
모의해킹 강의(SQL Injection Part1) 5 (1) | 2024.10.18 |
모의해킹 강의(SQL Injection Part1) 3 (0) | 2024.10.15 |
모의해킹 강의(SQL Injection Part1) 2 (0) | 2024.10.14 |
모의해킹 강의(SQL Injection Part1) 1 (0) | 2024.10.10 |