노말틱 모의해킹

[5주차 강의] SQL Injection

debugginglog 2025. 5. 7. 12:44

중간정리

  1. 1개월차 : 웹 서버의 이해
  2. 2,3,4개월차 : 웹 해킹 기법
  3. 5개월차 : 작은 프로젝트

Part 1 : 1개월차 복습

1. Client - Web - WAS - DB 흐름
2. Web : 파일을 전달하는 친구. 정적 리소스를 전달.
3. WAS : 동적 리소스를 전달
4. DB : 데이터를 저장하는 곳
5. Frontend - Backend의 구분
6. SQL 구문
7. 쿠키 : 포스트잇 / 출처가 클라이언트라서 문제가 생김
8. 세션 : 서버에 저장하는 정보 / 세션을 식별하기 위해서 세션 ID를 고안함
9. Burp Suite : Web proxy서버
10. 식별 과정 : 식별값(ID)으로 정보를 찾는 과정
11. 인증 과정 : 그 ID를 사용하는 사람이 실제 해당 유저인지 인증하는 과정

Part 2 : SQL Injection

1. DB를 공략하는 공격으로 DB의 데이터를 털 수 있는 기법
2. Injection : 주입하다. 넣다. 무언가를 SQL 구문에 주입해서 하는 방법
3. select * from member where id = '___' 에서 ___에 넣는거를 다른걸 넣으면 개발자가 의도하지 않은 방식으로 작동하게 할 수 있음
4. ex. normaltic' or '1'='1 이라는 값을 넣으면 항상 모든 것이 옳게 된다.
5. select * from member where id='___' and pass='___' 여기서 id 값에 normaltic' #이라고 입력하면 뒤에가 주석처리되어서 비밀번호 인증을 우회하게 된다.
6. sql에서 and와 or 중에서 and를 먼저 계산함

Part3 : SQL Injection 문제 풀이 1

1. 무지성으로 넣지 말라
2. 로그인 해봐야한다. ID,PW가 맞을 때 응답코드를 본다. 3으로 시작하는 코드는 리다이렉팅이기 때문에 location이 나온다. 그러면 자동으로 클라이언트는 location에 나오는 파일을 GET 요청하게 됨
3. 증거를 찾고 공격을 시도해야함
4. id에 {id}' and '1'='1을 시도해보면 sql구문으로 작동하는지 알게된다.
5. 항등원은 연산에서 자기자신이 나오는 것
6. ' and '1'='1 이라는 항등원으로 로그인이 성공할 때 sql 문법을 삽입할 수 있다는 결론이 나옴
7. 식별 인증이 동시에 된다면 'or'1'=1 로 시도해볼 수 있음 -> 가능하다면 인증 우회 공격이 가능하다는 것
8. 생각해보면서 넣어보기

Part4 : 인증 우회 케이스

1. 인증이 어떻게 로직이 되어있는지 이해하는게 우선이다.
2. set-cookie로 로그인이 유지되는 경우도 있다. 이걸 admin으로 변경해볼 수도 있다.

Part5 : 인증 우회 케이스2

1. Brute Force : 무작위 대입 공격
2. 사전 대입 공격 : 쓸만한 단어들만 공격
로그인 여러번 시도하는 경우 막는 것이 필요함

1. 건너뛰는 방법
2. 본인인증을 건너뛰기하고 회원가입하는 방법

Part6 : 과제

1. 오늘 수업 복습 정리!
2. 인증 위회 실습 문제 풀기! : write-up(문제풀이 작성하기!)
3. 웹 개발(로그인 페이지, 회원가입 페이지, 게시판 페이지)