YYYEJI

[DVWA] 웹 모의해킹 실습 (SQL Injection, XSS) 본문

Security

[DVWA] 웹 모의해킹 실습 (SQL Injection, XSS)

YEJI ⍢ 2022. 7. 27. 22:33
728x90

DVWA 란 ? ? ?

웹 모의해킹 실습 서버입니다.

실습을 시작해봅시다.

 

 

 

XAMPP를 먼저 실행해주세요!

XAMPP 가동시키기

http://localhost/dvwa

 

 

SQL injection - Low level

Low level - DVMA Security

 

 

SQL Injection, ID == 1

 

 

USER ID에 1' or 1=1# 입력하면

 

 

성공 ! ! !

 

 

view source를 click하면 Low level의 code가 나옴.

 

SQL injection - Medium level

SQL Injection - Medium을 풀기 위해서는 burp가 필요함

 

 

 

https://portswigger.net/burp/communitydownload

 

 

Burp Suite

 

Click Next and Start Burp

 

Click Dashboard

 

intercept is off로 해준 상태에서 Open browser

 

SQL injection site (DVMA) 링크 복붙하기

 

여기서 설정 다시 해주기

 

 

intercept off 해주고 위에 화면에서 submit 해주면 밑에 화면이 나옴

 

밑에서 4번째 줄에 security = impossible; 지워주기

 

마지막 라인에 id = 1 or 1=1 ~ 입력하고 Forward 클릭

 

성공 ! ! !

 

$id = myspl _real_escape_string($id);      // 특수문자 처리 (따옴표 등 걸러줌)

 

 

여기서 UNION 이란 ? ? ?

뒤에 새로운 쿼리문을 작성할 수 있고,

새로운 TABLE에 대해서 조회할 수도 있습니다.

 

union select user_id, password from users;

 

 

SQL injection -High level

 

 

high level - SQL Injection (Stored)

 

Click here to change your ID.

 

1' or 1=1# 넣고 submit 하기

 

 

성공 ! ! !

 

 

High level code - 하이라이트 된 부분 주석처리하면 상관없어지는 코드임.

 

SQL injection - Impossible level

Impossible level

 

SQL injection 

binding에서 쿼리문으로 인식하지 않음.

미리 데이터베이스에서 컴파일을 하고 오기 때문임.

 

주석(#) 처리를 해도 안됨.

 

 

 

XSS (Stored)

주로 게시판에서 악용이 됨.

다른 유저가 관람을 하면 스크립트가 열림.

이때 쿠키가 탈취됨(세션 정보 등이 탈취됨).

 

 

XSS - Low level

Low level - XSS

 

<script>alert(document.cookie);</script>

 

PHPSESSID는 session ID임 (로그인을 유지하는데 쓰임)

한 유저가 로그인을 하게되면 session ID를 받음.

session 시간이 만료되면 다시 로그인 해야됨.

( session ID - login 유지를 하기 위해서 사용 )

 

 

dvwa -> guestbook -> 마지막 데이터 삭제

 

사이트에서 교수님/ 학생이 접속할 수 있는 사이트가 있을 때,

학생이 교수님 페이지에 접속하면 안되지 때문에 토큰을 줌.

 

 

사이트에 들어가기 위한 토큰이 없으면 사이트에 들어갈 수 없음.

 

 

XSS - Medium level

Medium level - XSS

 

 

Medium code - 글자수 제한이 있음

 

 

 

하이라이트 된 부분에 <scr<script>ipt>alert(document.cookie);</script> 넣어주면

 

 

성공 ! ! !

 

XSS - High level

High level - XSS (Stored)

 

F12에서 글자수 제한 풀어주고, <body onload="alert(document.cookie)"> 입력

 

 

성공 ! ! !

 

XSS - Impossible level

Impossible - XSS (Stored)

 

 

impossible code - 특수문자를 처리하지 못하게 하는 코드가 있음

 

보안 요소를 확인하세요 ! ! !

이렇게 코드를 짜면 완벽한 웹 페이지 제작이 가능합니다 ! ! !

 

HTML Entity

엔티티 문자 엔티티 이름 16진수 엔티티 숫자 설명
  &nbsp; &#160; 줄 바꿈 없는 공백
< &lt; &#60; ~ 작은
> &gt; &#62; ~ 큰
& &amp; &#38; AND 기호
" &quot; &#34; 큰따옴표
' &apos; &#39; 작은따옴표

 

 

수고하셨습니다  ×͜×