SQL Injection Point
- 웹 페이지에서 SQL 질의문을 사용하는 곳
- 서버 측 SQL 질의문 추론 후 공격 시도
- 지금 이 파라미터는 서버에서 어떻게 만들어 지는지 생각해야 함
- 쿼리를 예상해봐야 함
- ex) baordRead.php?boardIdx=65
- select * from board where idx=’____’
- 65 and 1=1
- 65 aNd 1=1
- 65/**/and/**/1=1
- 65’ and ‘1’=’1
- 64+1
- select * from board where idx=’____’
SQL Injection 대응 방안
Prepared Statement
예외) order by → white List 필터링을 해주면 됨
XSS(크로스 사이트 스크립팅)
크사, 크스스
- 클라이언트(이용자) 측 스크립트 삽입
- 피해자 = 이용자
- 클라이언트 스크립트
- 이용자 브라우저에서 실행되는 스크립트(HTML, CSS, Javascript)
- 악성 스크립트 -> 이용자의 브라우저에 실행됨
- 공격 방식
- 이용자의 컴퓨터 브라우저가 실행할 스크립트를 삽입하는 것
- 스크립트를 삽입해서 이용자의 브라우저에서 실행되게 만든다.
스크립트 삽입 방법
서버에 스크립트를 저장(Stored XSS): 광역기
- 회원가입, 게시판 글 작성
- 데이터가 저장되고, 출력되는 곳!
- 게시판 글 작성 -> Burp 확인
- 화면에 나온다는다는 건 서버의 응답에 나와야 함
- 스크립트를 포함하여 글 작성 -> 그 게시글을 읽는 사람에게 스크립트 전달 실행
1. 작성한 페이지의 Request데이터가 출력되는 화면의 Response에 데이터가 있는지 확인
- 저장하는 곳, 출력되는 곳이 같을 수 도 있지만 다를 수 있음(회원가입 , 마이페이지 같은 경우)
2. 특수문자 체크(HTML 특수문자)( <, ’, ”, > )
- test<’”> Hello<’”> 출력 됨 -> 다 사용이 가능하구나를 알 수 있음
3. 스크립트 삽입
- POC: Proof Of Concept (보여주기 용도로 작성하는 코드)
- 우리가 삽입한 클라이어트 측 코드가 실제 이용자의 브라우저에서 실행되는 것을 보여주는 것
<script>alert(1)</script>
<script>prompt(1)</script>
<script>confirm(1)</script>
<script>console.log(1)</script>
서버의 에코 기능 이용(Reflected XSS): 타겟팅
- 파라미터 데이터가 서버 응답에 삽입되어 오는 곳
- 아이디 중복 체크 (’a’ 작성 -> ‘a’에 대한 아이디는 없습니다.)
- 검색창(’a’ 작성 -> ‘a’에 대한 검색 결과가 없습니다.)
- 링크를 전달하면서 공격
- 링크를 생성하고 링크를 클릭하게 유도하여 실행되게 함(GET 메서드)
- change Request method Post -> Get으로 변환
- 링크를 생성하고 링크를 클릭하게 유도하여 실행되게 함(GET 메서드)
1. Request의 파라미터 확인 후 Response에 파라미터 값이 나오는지 확인
- 삽입, 출력하는 곳이 무조건 같다.(아이디 중복 페이지)
2. 파라미터에 특수문자 체크<’”>
3. 파라미터에 스크립트 삽입
728x90
반응형
'모의해킹 > 모의해킹 스터디' 카테고리의 다른 글
모의해킹 스터디 CTF 문제 - SQL Injection Point 1 ~ 4 (0) | 2025.01.07 |
---|---|
모의해킹 스터디 8주차 정리 (0) | 2024.12.10 |
모의해킹 스터디 CTF 문제 - SQL Injection 5 (0) | 2024.12.10 |
모의해킹 스터디 CTF 문제 - SQL Injection 4 (0) | 2024.12.06 |
모의해킹 스터디 CTF 문제 - SQL Injection 3 (0) | 2024.12.04 |