카테고리 없음

5주차 모의해킹 공부 이야기

h/bhacker 2024. 11. 18. 21:51

 이제 부터 진짜 해킹관련 공부 시작하는 날~!!

SQL Injection
db를 공략하는 공격기법

웹 해킹이든 공격 공부할 때 Injection은 주입하다라, 넣다라 는 뜻임

 

Result
실행된 쿼리 : [select * from member]

ID Pass Email Info
dodol aaaa mario@test.com dol
fake qqqq fake@test.com FA
normaltic 1234 normaltic@test.com admin
test test1234 test@test.com ???

 

 

Result
실행된 쿼리 : [select * from member where id='normaltic']]

ID Pass Email Info
normaltic 1234 normaltic@test.com admin

 

아이디와 패스워드만 나오게하려면?

select id,pass from member where is=’normaltic’ 이렇게 하면

 

Result
실행된 쿼리 : [select * from member where id='normaltic']]

ID Pass
normaltic 1234

 

이렇게 나옴

 

이런 기능이 있다고 가정라면

조회할 회원의 id를 입력하세요

normaltic

 

실행된 쿼리 : [select * from member where id=’normaltic‘]

결과

id pass email info
normaltic 1234 normaltic@test.com admiin

 

normaltic이라고 쓰고 엔터를 치면 윃서버로 전달이 된다.

버프스윗으로 보면 post suite으로 가는 것이 보임

 

(WASselect * from member where id=’______‘) SQL을 준비했다가(이 글자를 준비하고 있다가) 우리가 작성한 글자를 ------안에 넣고 DB에게 넣어 실행하고 그결과를 우리엑세보여준다

 

만약 normaltic하고 작은 따옴표를 넣으면 ( normaltic‘ 이렇현태) SQLSyntax(문법오류)가 나옴

 

select * from member where id=’normaltic’ and ‘1’ = ‘1 이문장을 쓰면 뒤에 은 일부로 하나 안붙인 것임


select * from member where id=’normaltic’ and ‘1’ = ‘1’

실행된 쿼리 : 「select * from member where id=’normaltic’ and ‘1’ = ‘1문법이 실행되서 normaltic에 대한 정보가 나옴

1=1은 항상 참인 것을 의미함

 

만약 psas1234를 넣어보면

normaltic’ and pass=’1234 (이문장임)

 

normaltic’ and pass=’1234‘ 이렇게 하면 결국 아까와 똑같은 정보가 나옴
why?
결국 실행하면 select * from member where id=’normaltic’ and pass=’1234’ 이문장이다. 아이디가 normal이면서 동시에 pass1234 인 것 그렇기 때문에 데이터 정보가 나오는 것이다.

만약 normaltic’ or ‘1’ = ‘1을 실행하면

id pass email info
doldol aaaa mario@test.com dol
fake qqqq fake@test.com FA
normaltic 1234 normaltic@test.com admin
test test1234 test@test.com ???

이렇게 나옴

normaltic말고 다른 정보도 같이 나옴
그 이유는 웹서버에서 select * from member where id=’normaltic’ or ’1’ = ’1’ 이문자으로 실행된 것이다.

 

데이터를 넣고 그 데이터가 SQL 문법에서 사용한다고 판단 되면 그 데이터 뒤에 SQL 문법을 추가 하는 것이다.

쉽게 말하면 웹서버에서 “”을 가져오세요~!(이런 말을 준비하고 있었음) 우리가 빵을 입력하면
을 가져오세요~!가 실행되는 원리이다.

응용하면 물을 입력했을 때
가져오지 말고 저기 가서 점ㅍ 두 번 해 뒤에말 무시하고를 넣으면
가져오지 말고 저기 가서 점ㅍ 두 번 해 뒤에말 무시하고가 실행되는 것임

 

SQL Injection= SQL 문법을 주입해서 공격하는 공격 기법

웹 서버가 준비한 것은

select * from member
where id=’_______’ and pass=’_________’ 이다

그럼 사람이 보낸 idid쪽에 passpass쪽에 넣고 맞는 id와 비밀번호를 작성했다면 결과가 존재하고 로그인 성공함

But 틀린 id나 비밀번호를 작성했다면 로그인을 실해하게 하는 것임

 

그런데 비밀번호와 아이디가 틀려도 로그인이 가능할 수 있다

그방법은

ID: normaltic’ # 이렇게 하고 비번을 아무렇게 해도 결과가 나옴 why? #SQL에서 주석을 의미함
select*from member where id=’normal’#‘ and pass=’9999’
#‘ and pass=’9999’ 이부분은 무시가 된다.
실제 실행 코드는
select*from member where id=’normal’이다.

주석말고도 가능함

id=normaltic’ or ‘1’ = ‘1’

orand의 우선 순위는 and가 먼저 실행된다.
그래서 id=normaltic’ or ‘1’ = ‘1’을 보면
select * from member where id=’normalic’ or ‘1’ = ‘1’ and pass=’99‘ 이렇게 인데

select * from member

where id=’normalic’ or (‘1’ = ‘1’ and pass=’99‘) 이거와 같은 것이다.

 

302 혹은 3으로 시작하는 응답코드는 리다이렉트이다 즉, 저쪽으로 가세요와 같다

302 혹은 3으로 시작하는 응답코드는 location이라는 코드가 있음 그것을 보고 가면됨

SQL 취약점이 있는지 확인 방벙은
id : 아이디’ or ’1’ = ’1, password : 1342adaod를 해봐서 로그인이 되면 취약점이 있으니 SQLInjection도 생각해 볼 수 있지만 저게 안되면 SQL 취약점이 없는 것임

인증 우회
*인증 우회
-Brute Force (부르트 포스): 무작위 대입 공격
ex ) a 알파벳 조합들을 무작위로 대입 하는 공격기법
aa
aaaa
aaaaaa1234

 

사전 대입 공격: 쓸만한 조합들로 추려서 대입 공격하는 공격 기법

회원 가입

A B C

1. 약관 동의

2. 본인인증

3. 아이디 / 비번

본인인증을 건너뛰고 바로 아이디./ 비번으로 갈 수 도 있는 것 인증 우회기번 중 하나이다.

 

오늘 과제 ((1번이 우선순위 높음)

오늘 수업 복습 정리!

인증 우회 실습 문제 풀기

-내가 만든 로그인 페이지에 테스트 해보기
-write up(문제 풀이 작성해보기-이렇게 해서 됩니다 (x) / 이 문자를 넣었는데 이문자는 왜넣었는지 까지 자세히 적기)

3. 웹 개발(로그인페이지/ 회원가입 페이지 만들기)