일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- goblin 3번
- XAVIS
- 2002(HY000)
- UTM
- blind SQLi
- ubuntu
- utmp
- Error Based SQL Injection
- ModuleNotFoundError: No module named ‘requests’
- btmp
- Lord of SQL Injection
- 우분투
- docker compose
- 1819 (HY000):
- los.rubiya.kr
- SQL i
- Union SQL Injection
- SQLi wargame
- mocOS
- sql injection
- sqli
- Kail Linux
- No module named ‘requests’
- 가상머신 os
- M2
- Python requests 설치
- str_replace함수
- Lord of SQLinjection
- MySQL
- LOS 5번
- Today
- Total
klaus
[Week-2] 로그인 인증/식별 본문
0. 서론
이번주부터는 수업시간에 배운 내용을 살짝 정리하고 해당 내용을 복습할 때 한번 읽어보려고 합니다.
중간에 갑자기 생각이 안나고 그럴 때가 많은 것 같아 정리가 필요할 것 같습니다.
1. 단어정리
SQL injection : 단어 그대로 정상적인 SQL문에 악의적인 SQL문을 삽입하여 DB를 비정상적으로 조작하는 공격 방법
쿠키 : 웹사이트 방문했을 때 만들어지는 파일(정보 = 방문기록 비밀번호 등), 클라이언트 측에 저장됨
세션 : 서버에 저장되는 정보
세션ID : 쿠키에 저장되는 세션 식별 정보를 가진 ID
식별(Identification) : 해당 사용자의 계정정보를 DB에서 찾아내는 것(ID,사번 등), Promary key, 보호 X
인증(Authentication) : 식별된 DB의 정보를 사용자 정보와 비교하는 행위 (PW, OTP 등), 식별에 사용되는 정보
hash: 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수로 일방향성을 가지는 함수입니다.
암호화를 하면 복호화가 불가능하다는 개념으로 주요 알고리즘은 MD5,SHA시리즈 등이 있습니다.
2. SQL쿼리를 통해 식별/인증하는 5가지 유형
1. 식별/인증을 동시에 처리하는 유형
SQL문을 작성시 식별과 인증을 AND로 사용하여 검색
SELECT * FROM [테이블명] WHERE id = '$username' AND pass = '$pass';
쿼리문을 실행했을 때 결과값이 존재하면 로그인 성공 아니면 로그인 실패로 나오는 형태
(== 해당 방법은 매우 취약한 로그인 인증방식)
2. 식별/인증 분리하여 처리하는 유형
로그인 페이지에서 입력받은 id,PW값을 각각 변수 값에 저장하고 아래 쿼리문을 실행하여 실행 결과의 비밀번호와 유저값이 일치하는지 확인한 후 같으면 로그인 성공 아니면 로그인 실패로 나오는 형태
SELECT pass FROM [테이블명] WHERE id = '$username';
sql1.execute
if(pass == res.pass) ## 입력받은 PW와 DB값이 같으면 로그인 성공
else: ##다르면 로그인 실패
3.식별/인증을 동시에 처리하는 유형(with. hash)
pass부분을 hash 알고리즘을 통해 변경하여 쿼리문을 전달하고 로그인함.
SELECT * FROM [테이블명] WHERE id = '$username' AND pass = hash('$pass');
4. 식별/인증 분리하여 처리하는 유형(with. hash)
SELECT pass FROM [테이블명] WHERE id = '$username';
sql1.execute
if(hash(pass) == res.pass) ## 입력받은 PW와 DB값이 같으면 로그인 성공
else: ##다르면 로그인 실패
5. 식별/인증 분리하여 처리하는 유형(with.개행(\n))
해당 방법을 통해 작성된 쿼리문은 주석을 사용하지 못함
SELECT * FROM [테이블명] WHERE id = '$username' AND \n pass = '$pass';
금일은 2주차 수업을 정리해보았습니다.
다음 회차에서는 각 로그인 페이지를 만들어보고 해당 페이지를 우회하는 방법에 대해 확인해보겠습니다.
'수업 > 모의해킹' 카테고리의 다른 글
[Week-4] BLIND Based SQLi (20221103) (0) | 2022.11.06 |
---|---|
[Week_4] SQL Injection 예습(feat. Blind SQLi, 대응방안) (0) | 2022.11.02 |
[week_3] 스터디 정리 및 복습 (20221028) (0) | 2022.10.28 |
[Week_3] SQL Injection 예습 (0) | 2022.10.27 |
[Week-2]로그인 인증/식별 case별 SQLi 인증 우회 (0) | 2022.10.25 |