복습
쿠키
HTTP헤더 클라이언트측 정보. 서버로 요청을 보낼때 건내주는 정보 쪼가리
세션
세션 측 정보. 서버저장.
세션 ID
세션을 식별하기 위한 값. 쿠키 안에 들어
burp suite
사용법 숙지!
숙제
*wargame
로그인 우회
웹 해킹시 서비스를 분석. 그중에서 로그인 취약점을 찾기 위하여 로그인페이지 분석.
알고있는 계정으로 로그인. burpswite에서 history에 웹페이지와의 주고받는 정보 확인
get으로 id와 password 전송
응답에서 result가 올바를경우 result가 ok, 틀릴경우 fail.
admin으로 로그인할경우 fail이 나옴. 이 응답값이 ok면 로그인 성공.
do intercept response to this request를 해야 응답값을 잡을 수 있음
그 fail을 ok로 바꿀경우 로그인이 안떴지만 비밀번호가 틀렸다는 내용이 없음
로그인 성공시 index로 돌아가는데 다시 로그인 페이지로 돌아감. 자바스크립트 코드중에 login.php로 이동시키는 코드가 작동함. 그 코드는 클라이언트측에서 실행되는 코드임. 이 응답값 또한 바꾸게 된다면 로그인 페이지로 돌아가지 않음.
로그인 과정이 성공을 해야 세션을 만드는데, 세션이없는데 메인페이지로 들거갈수 있다? ->설계가 잘못됨.
세션을 생성하고 세션정보를 저장한 다음 로그인 처리를 하는경우가 있음. 이를 위에서 할 경우 문제가 발생함.
*미스터 브루트
opt인증. 오류횟수 제한이 없음. intruder
> SQL : was와 db의 연결 언어
DB:
database : 엑셀 파일
db생성 : 엑셀 파일생성
table : 엑셀 sheet
colum : 열
SELECT문.
구조 : select [컬럼이름] from [테이블 이름]
(_) 조건 걸기
select [컬럼이름] from [테이블 이름] where (조건)
조건 : 컬럼이름 = 데이터
ex) id = 'member'
이 경우 컬럼이름이 데이터와 맞는 경우만 결과를 가져움
** 로그인 인증과정
>식별
많은 데이터중 특정한 정보를 가려내는 것
식별정보 : ID
식별정보는 중복되는 안되는 값이여야 함
>인증
그 사람이 맞는지 확인
인증정보 : 비밀번호
case
1) 식별과 인증을 동시에 처리 하는 case
식별과 인증을 sql 쿼리 한번에 하는 경우
select * from member where id='' and password=''
위 sql문을 실행했을 떄 if문으로 결과가 존재할 경우 로그인을 성공시키는 방법
2)식별과 인증 분리 case
select pass from member where id=""
db의 비밀번호를 가져오게 되면 그 비밀번호를 비교해서 인증
보안상 둘다 비슷함
** sql injection
>sql 질의문을 삽입하는 공격
이를 이용해 데이터 추출, 인증 우회, 데이터 변조 등 가능
select * form member where id='' and pass=''
#은 주석처리이므로 '#을 입력하면 그 이후 sql문은 주석처리됨.
sql injection으로 로그인 인증 우회
1)식별과 인증 동시
select * firom member where id='' and password=''
주석처리 : mario'#
or구문 이용 : mario 'or '1'='1
위의 경우 mario의 데이터만 나온다.
or와 and의 연산 우선순위 : and가 먼저 실행되고 or 실행. and 구문은 거짓조건이므로 위의 경우 비밀번호는 보지 않지만 true 조건인 id는 확인함.
or : mario' or '1'='1'#
위 조건의 경우 or 이하 구문이 참이 되므로 모든 값이 나옴
2) 식별과 인증을 분리하는 경우
union
-> 데이터를 연결해서 출력함
-> select를 두개 쓸수 있게 함
select ~~~~ union select ~~~~
select * from member union select '1','2','3','4';
id에 1 pass 2 email 3 info 4 나옴
문자를 쓰면 문자가 그데로 출력됨
따라서 다음과 같이 sql injection 가능
x' union selcet 'mario','1111', '2222', '3333', '4444'#
다만 union의 경우 컬럼의 숫자를 알아야 함!!
과제
1. sql injection으로 로그인 우회
-식별 인증 동시
-식별 인증 분리
>
2. 로그인 로직 만들기 가능한 모든 케이스
그리고 우회 연구.
3. 회원가입 기능 구현
4. 문제풀이
>sql injection 문제 풀이
'Nomaltic Hacking Study' 카테고리의 다른 글
| Union SQLi, Err SQLi 실습 (0) | 2023.04.20 |
|---|---|
| 2023.04.2 (0) | 2023.04.20 |
| 2023.04.06 (0) | 2023.04.06 |
| 2023.04.04 (0) | 2023.04.04 |
| GET / POST 메서드로 웹 서버에 데이터 전달해보기_1주차 (0) | 2023.04.02 |