* 추가할 기능 구현 (게시판)

- 댓글 수정기능 -> 댓글 삭제 기능

- 조회수 조작 방지 기능

- 게시글 삭제 기능


* 추가할 기능 구현 (인증)

- 소셜 인증


==========================================


  댓글 수정말고 댓글 삭제 기능을 넣었다. 댓글 같은 경우 수정할 바에 차라리 지우고 다시 쓰도록 의도하였다.


  먼저 작업 들어가기전에 갑자기 아이디어가 떠올라 개선한 점이 있다. 바로 리다이렉트부분이다. 기존 같은 경우 게시글을 수정하거나, 게시글에서 댓글을 작성한 후에 게시글 리스트로 리다이렉트 된다. reverse를 써서 제자리에 오도록 하려했으나 (F5기능) circular import 문제 때문에 구현하지 못했었다.


  그런데 그냥 템플릿에 넘겨주면 되지 않나? 라는 생각이 들어 이 부분을 해결하였다.


< render로 변경 >


  템플릿을 지정해주고 context 안에 post를 담아서 보내주었다.



< 개선된 게시글 >


  이제 이 자리에서 바로 글을 수정해도 이 페이지며, 댓글을 달아도 이 페이지로 남는다.


  그런데 이상한 점을 추가적으로 포착했다. 바로 개행이 안된다는 점이다. 위 사진을 보면 분명 내가 Update 마다 줄을 바꿔줘서 넣었는데 개행처리가 안됬다.


  이 점에 대해 검색을 해보니 HTML에서 개행을 처리 안해서 그렇다고 한다. 개행을 <br> 로 바꿔주면 된다. 여기서 linebreaksbr 을 사용하면 <br>로 바뀐다고 한다.



< linebreaksbr >


  확인해보면 다음과 같다.


< 개행처리 되는 모습 >



  이제 본격적으로 구현하고자 하는 기능 구현이다. 먼저 게시글 삭제 기능이다. 이 기능은 직접 구현하지 않고 CBV를 이용하여 구현하였다. 다만 함부로 삭제되면 안되므로 현재 로그인된 사용자가 게시글을 작성한 사람과 같은지 검증하기 위해 filter를 이용하여 검색된 쿼리만 삭제하도록 구현하였다.


< PostDeleteView >


  테스트해본다.!


< 삭제 테스트 >



< 삭제 확인 팝업 >


  정말 삭제할 것인지 물어본다.


  그 후 정말 삭제할 것인지 다시 한번 물어보는데 이는 DeleteView에 있는 기본 기능에서 템플릿만 만들어서 이어주었다.


< 재재확인 >



< 삭제된 글 >


  글이 정상적으로 삭제 되는 것을 확인하였다.



  다음으로 댓글 삭제이다. 댓글 삭제도 CBV를 이용하고 싶었으나, pk 종류가 두개가 들어오는데 이를 처리하는 부분에서 계속 에러가 나서 직접 view를 작성하였다.



< comment_delete view >


  post와 comment 둘 다 얻는다. 그 이유는 comment는 삭제하기 위한 것이고, post는 다시 원래 있던 페이지로 돌아가기 위해서이다.



< 댓글 삭제 테스트 >


  맨 위의 댓글을 지워보았다.



< 댓글 삭제 확인 >



  댓글이 정상적으로 삭제되었다. 




* 추가할 기능 구현 (게시판)

- 조회수 조작 방지 기능



* 추가할 기능 구현 (인증)

- 소셜 인증



  Django 프로젝트에서 게시판 프로젝트를 시작한다. 인증 부분에서 소셜인증, 회원정보 수정을 제외하고는 전부 구현하였다. (나머지 기능은 차차 구현할 것이다.)



  오늘은 게시판에서 게시글들을 출력하고 게시글을 들어가서 확인하는 것까지 구현하였다.


  먼저 시간 설정을 해주었다. Post 모델을 정의하여 게시글을 만들었다. 이 때 작성일시를 자동으로 현재 날짜시간을 기록하게 하였는데, 이 때 settings.py 에서 설정해주어야할 것이 있다.


< settings.py 설정 >


  이 변수를 False로 설정해야 settings.py에서 설정한 시간대를 프로젝트 전체에서 사용할 수 있다.



  Post 모델을 정의하였다.


< Post 모델 >


  이 모델은 게시글이다. 작성자를 CharField로 설정한 이유는 사용자의 프로필에서 nickname을 가져와서 문자열로 저장하려고 하기 위해서이다.



< urls.py >


  다음으로 urls.py를 설정해준다. 기본적인 게시글 리스트와 디테일을 만들었다. 그리고 추가적으로 글 쓰기와, 글 수정을 만들었다.



< CBV를 이용한 View >


  글 리스트와 디테일은 CBV를 이용하여 쉽게 구현하였다.



< 게시글 목록 보기 >



< 게시글 자세히 보기 >


  다음으로 글 작성하는 것을 만들었다. CreateView (CBV)를 이용할 수 있었지만, 나는 작성자에 사용자의 프로필에 있는 닉네임을 넣어줄 것이고 또한 메세지를 출력해주고 싶었기에 직접 view를 만들었다.


< post_write view >


  글쓰기 뷰를 만들고 테스트해보았다.



< 글 작성 테스트 >



< 글 작성 성공 메세지 알람 >


< 글 작성 리스트에서 확인 >



< 글 작성 내용 보기로 확인 >



  다음으로 작성한 글에 대한 내용을 수정하는 것이다.


< post_update view >


  여기서 인증부분이 필요했다. 글은 아무나 수정하면 안되기 때문이다. 로그인한 사용자의 정보에서 프로필을 가져와 프로필에 있는 닉네임과 게시글 작성자를 비교하여 같으면 수정을 허락하고 같지 않으면 경고를 해준다.



< 글 수정 테스트 >



< 글 수정 성공 메세지 알람 >


< 글 수정 확인 >


  오늘 일지의 마지막으로는 유저 확인기능에 대해서 정리할 것이다. 게시글에서 작성자가 나오는데 해당 작성자에 대해 알아볼 수 있는 기능을 추가하기로 했다. 작성자를 클릭하면 작성자의 정보가 나오게 하는 것이다.



< user_select_info view >


  개인 정보 확인하는 것을 그대로 따왔다.



< urls 추가 >


  개인정보의 경우 로그인정보를 이용하여 정보를 가져오면 되지만 다른 사용자의 정보를 출력하기 위해서는 해당 사용자의 정보를 넘겨줘야한다. 그래서 나는 작성자를 넘겨 주기로 했다.



< 작성자 확인 테스트 >

  tfa 를 클릭해보았다.



< 다른 사용자 정보 확인 >


  다른 사용자의 정보를 확인 할 수 있었다.



=============================


* 추가할 기능 구현 (게시판)

- 댓글 기능

- 조회수 기능

- 게시글 삭제 기능


* 추가할 기능 구현 (인증)

- 소셜 인증



@8번
현재 7번은 서버 에러인지, 문제페이지에서 그 다음 페이지로 넘어가지지 않아서
8번으로 넘어가서 풀었다.
8번은 아주 단순한 문제였다.




(8번 문제)




(문제 화면)



로그인 우회 문제인가? Injection문제인가? 하고
신나게 해보다가 안되서 소스코드를 확인하였다.

확인해보면 힌트가 나와있다.




(힌트)



힌트는비밀번호 0부터 9999까지 라고 나와있다.
비밀번호를 그냥 0부터 9999까지 다 넣어보면 금방이겠는데? 라는 생각이 들었다.
이 문제 브루트 포스 문제인가?

파이썬을 이용하여 코드를 작성하였다.




(코드 작성)



프로그램을 실행시켜 확인해보니
순식간이다.



(실행 중 모습)



실행하다가 로그인이 된 순간 비밀번호가 나왔다. :)



(로그인 성공)



문제 해결!


'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS : Challenge WEB 23  (0) 2017.03.30
SuNiNaTaS : Challenge WEB 22  (0) 2017.03.29
SuNiNaTaS : Challenge WEB 6  (0) 2017.03.28
SuNiNaTaS : Challenge WEB 5  (0) 2017.03.27
SuNiNaTaS : Challenge WEB 4  (2) 2017.03.23





오늘은 코딩을 해보았다.
Training 문제로 간단한 문제를 풀었다.


(Prime Factory 문제)



문제는 이렇다.
100만 이상의 숫자의 소수를 구한다.
그 소수의 합 또한 소수인 수를 구한다.

이런 소수를 2개 구한다.
그리고 이어주면된다.

예를 들어
1234567 과 2345678 을 구했다 치면
12345672345678을 답으로 적으면 된다.

이 문제를 풀기위해 소수의 합의 소수를 구해야해서
중복되는 코드가 있으므로 함수를 만들어서 사용했다.

첫번째로 만든 함수는 소수인지 판별하는 것이다.



(소수 판별 함수)



소수 판별 함수는
flag 변수를 두어서
만약 나누어지는 값이 발견되면 flag를 1로 주어 return하고
없다면 그대로 0으로 나간다.
즉 밖에서 보면 0이 나오면 소수이고 1이 나오면 소수가 아니다.


두번째로 구한 소수의 자릿수를 전부 더해주는 함수이다.



(자릿수 더하기 함수)



이 함수의 설명은 코드 보는 것과 같다.
각 자리수의 10의 거듭제곱으로 나누어 각 수를 더해서
return 한다.

이 두가지 함수를 이용해서
계산한다.

처음 시작은 100만으로 시작해서 하나씩 증가시키면서 검사한다.



(완성 코드)



두가지 변수에 가득 차면 반복문이 종료된다.



(실행 결과)



실행 결과를 복사 해서
정답에 넣으면!



(정답)



정답이 된다. :)

간단한 문제지만
30? 40분은 걸렸던거 같다..!

오랜만에 해서 그런가 보다
자주 해야겠다 :)



'WarGame > WeChall' 카테고리의 다른 글

WeChall - (Coding) Training: Programing 1  (0) 2017.01.26



Wechall 이라는 워게임 사이트가 있다.

여기서 여러 문제를 해결하면서 실력을 쌓을 수 있다.

오늘 풀이를 할 문제는 Coding 카테고리의 Training이다.



(Training: Programing 1 선택)



초록색으로 표시된 이유는 내가 한번 풀었기 때문에
초록색으로 표시된 것이다.

들어가보면



(문제화면)



문제를 보면 this link를 들어가서 받은 메세지를 다시 보내라는 뜻이다.

일단 this link에 들어가보자



(메세지)



메세지가 보인다.
이 메세지를 다시 보내라는 것이다.
어디로?

아래 드래그한 주소로!


(솔루션 보낼 곳)


뒤에 the_message부분에 우리가 받은 코드를 입력해서 전송하면 된다.

물론 시간제한이 1.337초 이므로 손으로는 불가능하며
네트워크 통신도 원활해야한다...

먼저 파이썬 챌린지에서 했던 urllib.request를 이용해 접근해보겠다.!




(??..)



url로 접속하니 로그인을 한 후
해당 쿠키로 접속을 해달라고 메세지가 왔다.

즉, 그냥 url만 보내면 안되고
접속했을 때의 쿠키값을 HTTP 헤더에 포함시켜서 보내야하는 것이다.!

와이어샤크로 나의 쿠키값을 확인해보겠다.



(쿠키값 확인)



와이어샤크로
나의 쿠키값을 확인 할 수 있다.

이제 이 값을 포함시켜서 url접속할 것이다.



(쿠키 추가)



쿠키를 추가한 모습이다.
그리고 code에 decode하여 우리가 원하는 문자열을 받았다.



(결과화면)



우리가 보내야할 코드가 잘 전달 되었다 :)

이제~ 이 값을 url 뒤에 붙여서 전송할것이다.



(답 전송)



전송 하고나서 수신된 메세지는 텍스트로 오기때문에 읽기가 힘들다...
그래서
와이어샤크로 확인을 해야한다.
와이어샤크로 확인!


(..?)



정답이다! 하지만,, timeout... 1.63초로..
현재 카페에서 하고있어서 빠르지 못했나보다..

다시 여러번의 시도를 한 후에야 통과했다. ( 네트워크가 빠른 곳에서 하는걸 추천한다.)



(정답화면)



나는 이미 한번 풀었기 때문에
이미 풀었던 문제라고 메세지가 돌아왔다.

문제 해결!


'WarGame > WeChall' 카테고리의 다른 글

WeChall - (Training) Prime Factory  (0) 2017.02.13


오늘은 DNS Spoofing 프로그램을 이어서 완성해보겠다.

어제까지 DNS 패킷까지 필터링 하는 것까지 했다.

이제 DNS 응답 패킷을 만들어서 보내주면 된다.
가짜 IP주소로 192.168.3.151로 보내줄 것이다.
여기에 가짜 사이트를 만들어두었다.



(가짜 사이트)



이 사이트로 유도할 것이다.

어제까지 만들었던 것에서 DNS 데이터의 모양을 확인해보겠다.




(이전까지 만들었던 코드)




(DNS 패킷 전송)




(데이터 출력 화면)



여기서 우리는 출발지 주소와 목적지 주소를 교환해서 입력해줄 것이다.

DNS 응답 내용을 채워서 보낼 것이다.




(패킷 채우기)




(패킷 채우기)



(결과 확인)




(결과 확인)



결과를 보니 잘 들어가는 것을 확인 할 수 있다.
뒤에 0들이 있는 부분에 answer 필드를 채워서 보낼 것이다.




(answer 필드)




(결과화면)




결과화면을 보니 Answer필드도 채워졌다.
이제 이대로 전송하면된다.

전송 결과
피해자가
naver.com를 입력하니 가짜 사이트로 접속되는 것을 확인 할 수 있었다.









이번 문제도
신기하지만
요상한 문제였다.

문제화면이다. 5번!



(5번 문제화면)




소리내서 읽어봐라??

일단 소스코드로!



(소스코드)



banner.p 라고 보인다.
주석으로 peak hell 비슷한 말이라고 힌트를 줬는데
피클? p 파일을 읽어봤다.



(banner.p 코드)



???.?
이건 뭐지
규칙도 없고
의미도 없는 듯했다.
banner.p로 url 수정해서 들어가면 되나?


(??)



다운하라는 화면이 떳다.
음.! 파일이구나

나는 급히(천천히)
python.org의 참조문서를 찾았다.
p를 눌러서 뭐가있나 보는 순간 피클? 이 있었다.
피자먹는 피클인줄 알았는데
심오한 뜻이 있었다.




(pickle 자료화면)



내용을 찾아보니
파일을 직렬화, 역직렬화 시켜주는 모듈.. 이라고 나와있었다.

내용을 더 찾아봤다. (당연히 도통 무슨소린지)

찾아보니
텍스트 파일이 네트워크로 전송될 때 텍스트 파일그대로 날라가지 않고
직렬화 시켜주어야하는데 그 때 쓰는 모듈이라고 나와있었다.
즉 텍스트 파일을 바이너리로 바꾸어주고 그 바꾸어준 파일이
스트림형태로 소켓에서 입출력 되는 것이다.

그건 그런거시고
문제의 데이터값을 입력해보았다.



(피클 입력)



(피클 입력)



음.. 그래도 규칙(?) 이 나름있는
언어로 바뀌었다. 형태를 보니 튜플이고 리스트였다.

일단 파일을 하나 만들어서 출력해보았다.



(출력 화면)





(출력화면)




음..
왼쪽 부분은 비거나 #이 들어가고
오른쪽 숫자는 합이 일정한거 보니 규칙이 있어보였다.

#의 개수에 따라 결과가 나오는 듯 했다.
반복문을 돌면서 출력!



(for 출력)





(출력화면)



이제 확실해졌다.
오른쪽 숫자는 개수이다.왼쪽은 들어갈 것으로 공백하고 #이 있다.

공백 몇개, # 몇개, 공백 몇개 이렇게 되있다.

일단 빈 문자열을 만들어주고
한행씩 돌면서 문자를 입력했다.




(완성코드)




(실행화면)



실행 결과로 channel이 나왔다.
멋있는 화면이다(?)

해왔던데로 url에 channel 입력


(정답으로 넘어간 화면)



정답이다!

덕분에
피클이라는 모듈을 공부하게 된 계기가 되었다.



'WarGame > Python Challenge' 카테고리의 다른 글

Python Challenge - 4번  (0) 2017.01.09
Python Challenge - 3번  (0) 2017.01.02
Python Challenge - 2  (0) 2017.01.01
Python Challenge - 1  (0) 2017.01.01



(1)에서
ARP Spoofing까지 프로그램을 마무리했다.

그리고 포워딩 기능을 추가하기로 했는데
포워딩을 그냥 윈도우의 라우팅 서비스를 이용할 것이다.

이제 받아온 패킷에서
DNS 패킷을 구별하고
www.naver.com 특정 도메인 네임에 맞는 패킷들을
필터링 할 수 있어야
그 패킷에 대한 응답을 먼저 할 수 있다.
그리고 그래야 DNS Spoofing을 할 수 있다.

먼저 DNS 패킷을 구별해보자.

DNS는 53번 포트를 사용하므로 udp 헤더의 도착지 포트번호를 확인하면 된다.




(DNS 포트 53번 확인)




(DNS 패킷 생성)





(DNS 패킷이 수집된 모습)



DNS 내용이 수집된 화면이다.
맨 앞 두바이트가 Trx ID이고 (DNS Spoofing때 필요한 항목이므로 뽑아낼 수 있어야한다.)
그 다음 2바이트 0x0100 Flag가 보인다.
그 다음 2바이트 Question, Answer, Authority, addional 이 보인다.
그리고 3으로 시작하는 DNS 주소가 보인다.
DNS 패킷이 맞는걸 확인 할 수 있다.

이제 여기서 DNS Question의 주소부분만 떼올 수 있어야한다.
unpack을 사용해서 질문 필드만 떼어내 보았다.




(쿼리 내용 추출)





(내용 화면)



처음에는 출발 포트번호 53번도 적용시켜서 응답까지 봤는데
잠깐 우리가 패킷을 분석하면서 확인해야하므로
목적지 포트 53번만 검사하도록 잠깐 수정했다.
(또, 내 호스트에서 나가는 패킷으로 검사할 것이므로 내 패킷이 보이도록 수정했다.)




(확인을 위한 수정)





(www.naver.com 검색)





(결과화면)



naver 를 검색한 DNS 패킷 내용만 잘 출력되는 것을 볼 수 있다.

여기서 DNS Spoofing에 필요한 정보
1. Src Port Number
2. Transaction ID
3. DNS 물어보는 내용

위 내용을 확인해보도록 하겠다.




(확인 코드)




(결과)



이제 여기서 주소 도메인 네임만 정확히 뽑아내야한다.

그러기 위해 바이트형식으로 되있으니 decode()를 해주었다.



(decode() 코드 추가)





(결과 화면)



www.naver.com이 잘 보인다.
이제 이 것을 문자열로 뽑아내는게 일이다.



(도메인 부분만 뽑아내는 코드)



(결과 화면)



도메인 네임만 잘 보이게 되었다.

이제 다시 src_ip != 100 으로 수정하여 나의 IP를 제외한 다른 패킷들을 볼 것이다.
조건을 수정해주고

ARP Spoofing을 해준다음
아래의 코드를 실행시켰다.
그리고 피해자는 www.naver.com에 접속하였다.





(완성한 코드)





(입력한 naver.com가 보인다.)



피해자가 보낸 패킷의 내용을 덤프 받을 수 있고
확인 할 수 있었다.

여기 까지 했으니 (3)에서는
이 패킷을 받아서 naver.com을 물어보는 패킷에 대해
응답패킷을 만들어서 피해자에게 보낼 것이다.

그렇게 되면 DNS Spoofing 공격에 성공하게 되는데
그 결과를 확인해 볼것이다.




4번 문제또한
새로운 문법을 공부할 수 있는 좋은(?) 계기가.. 되었다.

문제 화면이다.




(4번 문제 화면)




(사진을 클릭한 화면)



44827을 url 끝에 입력하고 들어가니 비슷한 패턴의 숫자가 또 나와서
입력하였다.

세번째(?) 인가..



(손이 아플꺼야 화면)



정확히 이게 맞나 싶은 생각이 들때
이 문구가 나왔다.

이런식으로 계속 들어가야 정답이 나오는데
손으로는 힘들겠다.. 라는 생각이 들었다.

새로운 방법이 필요했고
파이썬에서 제공하는 url 관련 기능을 이용하기로 했다.




(파이썬 문서 참조)



여기 에 있는 것들 중에 urllib.request를 사용할 것이다.

먼저 url 내용을 가져오는 작업을 (실험? 을 통해) 하였다.




(문구가 나오는 화면)



내용을 가져오는 것은 read() 인것 같다.
이 내용을 보니 byte 형식이길래
decode를 해야겠다고 생각이 들었고

decode를 하였다.



(decode 화면)



decode 한 순간
내용이 사라졌다..
이 문제로 굉장히 난감하고 힘든 나날들을 보냈다.

데이터 내용을 접근만 하면 사라져서..

그리고 해결책을 찾아냈다.
urlopen으로 바로 여는게 아니라 그렇게 하면 안됬다.
request.Request로 얻어온 내용으로 open을 하고 그 내용을 read로 읽어 들인 후
decode를 하면 내용을 뽑아 올 수 있었다.

문서를 찾은것이라기보다 이것저것 노가다의 시도 끝에...



(24번째가 숫자이다.)



(뒤에 입력해야할 값을 뽑아냈다.)



이제 뒤에 입력할 내용까지 뽑아내는데 성공했다.

이제 이 값을 url주소에 입력하면서 반복적인 작업을 해줘야한다.

while 문으로 코드의 길이가 없으면 중지되게 계속 반복문을 돌렸다.



(처음 시도)



(결과화면)



아.. 3번째는 팔아프다는 어쩌구 문구 때문에 24번째가 아니었다.

고민없이 뒤에 94485를 수동으로 입력 후 다시 진행



(다른 문구)



2를 나누어서 다시 계속 진행하라고 했다.

음.. 16044를 2 나누어서 8022로 다시 진행




(8022 다시 진행)



(이번엔 또 다른...)



뭔가 착오가 있다고 나왔다.

일단 지금까지 규칙대로 nothing 뒤에 있는 저 숫자
63579를 입력했다.



(63579 입력)



(??! 정답?)



마지막에
peak.html이 나왔다.

내가 보던 정답 유형과 비슷해서 정답이라는게 느껴졌다.



(정답 입력)



(정답!)



정답이다.! :)

뒷걸음치다 소잡은 느낌이긴 하지만..

url 파이썬을 공부하게 된.. 계기가 되었다.

4번 해결..!



'WarGame > Python Challenge' 카테고리의 다른 글

Python Challenge - 5  (0) 2017.01.18
Python Challenge - 3번  (0) 2017.01.02
Python Challenge - 2  (0) 2017.01.01
Python Challenge - 1  (0) 2017.01.01

오늘은
TCP 헤더를 이용한 공격 기법을 확인해 볼것이다.
TCP 공격기법으로는
1) TCP Scanning
2) TCP를 이용한 DDos 공격이 있다.

오늘은 TCP Scanning 기법을 확인 해 볼 것이다.

1) TCP Scanning
 - Flag ( SYN, FIN, RST, ACK, ... )
 - 열려있는 포트와 닫혀있는 포트의 응답이 다르다.
 - 3-way handshake를 이용한다.

- FULL-Scan
 : 3-way handshake과정을 모두 거친다.
 : 세션을 맺어보는 것이다.
 : 맺어지면 열려있는 것이고 연결이 안되면 닫혀있는 것이다.
 : TCP 연결 흔적이 남는다. 연결되었다는 기록이 남는다.



(FULL Scan 코드)





(포트가 열려있을 때 모습)




위 처럼 포트가 열려있으면 아무 반응이 없다.

하지만 포트가 닫혀있으면 연결이 안되므로



(135번 포트 스캔)




(오류 메세지)




연결 할 수 없다고 뜬다.

이 처럼 한번 TCP 연결을 해보면서 포트가 열려있는지 확인하는 것을
TCP 스캔이라고 한다.




(Half Scan 코드)




(포트가 열려있을 경우)




포트가 열려있을 경우 위 처럼 ACK SYN 패킷이 돌아온다.

닫혀있는 경우 RST 패킷이 돌아온다.




(닫혀있는 경우)




포트가 닫혀있는 경우는 위와 같이 RST 패킷이 돌아온다.
즉, 연결이 안된다.

- HALF-Scan( Stealth Scan )
 : 3-way handshake를 이용하지만 완벽하게 연결하지 않는다.
 SYN Scan( 열려있는 포트에 대한 스캐닝 기법 )
 (1) 서버에 동기화 요청 (SYN)
 (2) 서버에서는 SYN-ACK로 응답(Listening이라면)
     서버에서는 RST 패킷을 보낸다. (닫혀있다면)
 (3) ACK로 응답을 하지 않는다.

SYN-ACK 패킷이 오면 우리는 그에 따른 응답을 안해주고 연결을 여기서 끊어준다.
그렇기 때문에 Half Scan이라고 한다.

서버에 로그 흔적이 남지 않는다. (연결이 이루어지지 않았기 때문에)


 (닫혀있는 포트에 대한 스캐닝 기법)
 - FIN SCAN, NULL SCAN, X-MAS SCAN,...
 -> 이녀석들은 반대다.
 -> 닫혀있으면 반응하고, 열려있으면 반응을 안한다.
 => 이것이 표준이지만, 표준과 다른 경우도 많다.
 - X-MAS 는 모든 플래그를 세팅해둔다.


 - SYN-ACK 스캔 ( 호스트 스캔 )  (유용한 스캔) (포트와는 상관없다.)
 : ping보다 성능이 더 좋다. (방화벽에서 막지 못한다.)
 : 포트가 열려있는지 닫혀있는지 관계없이 호스트가 살아있다면 응답이온다.
 : 죽어있다면 응답이 오지 않는다.
 : 방화벽을 다 뚫을 수 있고 살아있는 시스템을 다 체크할 수 있는 좋은 스캔이다.
 : 해당 서버에 기록이 남지 않는다.




(SYN-ACK 스캔 모습)





+ Recent posts