반응형
SMALL

'전체 글'에 해당되는 글 209건

반응형
LIST
반응형
SMALL

웹해킹을 하는데 환경설정은 필수이다. 이것이 되지 않는다면 웹해킹 실습은 불가능하다고 보면 된다. 웹 개발을 조금이라도 해보고 서버를 만져본 실무경험이 있다면 사실 설치하고 셋팅하는 절차는 매우 간단하다.


1. 먼저 virtual Box를 다운받아 설치해준다. 필자는 이미 설치가 되어 있기 때문에 과정은 생략하는데,  https:/www.virtualbox.com 으로 들어가면 이미지를 다운받아 설치할 수 있다. 올바르게 설치된 화면은 다음과 같다.



이런식으로 설치가 되면 되는데 필자는 칼리리눅스와 Bee-Box를 전부 설치해 놓은 상태이다. 


2. 다음은 Kali-linux 이미지를 다운받아 준다. https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/로 들어가서 원하는 사양, 환경을 고려해 이미지를 다운받아준다. 필자는 64비트로 받았는데 용량이 대락 3.3GB정도 소모되었던 것 같다. 





3. 이미지를 다운받고 virtualBox에 설치해줘야 하는데 사진에 있는 절차대로만 하면 칼리리눅스는 금방 설치된다. 그런데 여기서 주의할 점은 virtualbox ext-pak도 같이 설치해주어야 칼리리눅스가 설치된다. 이것만 참고하면 된다.





이런식으로 다운받은 이미지를 불러서 계속 버튼을 눌러주면서 설치해주면 된다. 설치과정은 전혀 어렵지 않으니 본인이 하면 된다. 참고로 접속할때 ID는 root 비번은 toor이다. 이것만 참고하면 된다.


칼리리눅스 설치가 되면 마우스 오른쪽을 클릭해 설정을 누르고 네트워크를 다음과 같이 설정해준다.




이렇게 설정하고 칼리리눅스를 실행하면 이런화면이 보이면 아주 잘 설치된 것이다.



칼리리눅스는 해킹툴이 굉장히 많이 있고 잘되어 있는 os기 때문에 항상 주의해서 써야한다. 앞으로 해킹 공부하면서 가상환경에다가만 해야하며 실서버공격은 절대 금지이다!! 우리는 화이트해커가 되어야 하며 절대 블랙해커가 되면 안된다!!


Burpsuite라고 터미널에 치고 설치가 되어 있는지 확인한다. 근데 보통 설치는 다 되어 있다. 이건 프록시나 로그 분석할 때 주로 많이 쓰이는 툴이므로 유용하게 쓰인다. 웹 해킹할때도 예외는 아니다.




그리고 sqlmap -h라고 치면 다음과 같이 나오면 정상설치 된 것이다. 보통 이것도 다 설치는 되어 있다.




마지막으로 메타스플로잇이 설치되어 있는지 보는 명령어인데 이것도 보통 설치는 다 되어 있다. 아래와 같은 화면이 나오면 정상적으로 설치된 것이다. 명령어는 msfconsole -h이다. 참고로 메타스플로잇도 해킹도구이기 때문에 항상 가상에다가만 해야하며 실서버 공격 절대 금지다.





이렇게 하면 칼리리눅스 세팅은 다 끝났다. 


4. 다음은 Beebox를 설치하는 과정이다. BeeBox도 사진따라서 설치만 해주면 끝난다. 참고로 Beebox는 우분투 환경에서 설치된다.





가상머신 메모리 크기는 본인이 지정해주면 되는데 보통 1024로 하는게 일반적이다.



bee box 압축파일을 다운로드 한후 압축을 풀면 bee-box폴더가 생성되는데 bee-box.vmdk를 선택해서 열면 된다.



이런식으로 해서 올려주면 된다. bee-box 압축파일은 https://sourceforge.net/projects/bwapp/files/bee-box/ 에서 다운받으면 된다. 만들기만 누르면 Beebox가 설치된다.



비박스가 설치되고 설치된 비박스 오른쪽을 클릭해 네트워크에서 NAT 네트워크로 설정하고 ok버튼을 눌러준다.



정상적으로 설치되면 다음과 같은 화면이 부팅되게 된다.




이런식으로 나오게 된다. 그런데 여기서 하나 문제점은 터미널에 abcd를 치면 qbcd가 나오는데 이건 환경설정가서 kor언어로 바꾸어 줘야 된다. 바꾸는 과정은 다음과 같다.



마우스 오른쪽을 클릭해주면 keyboard Preferences가 나오는데 여기로 들어간다.



여기서 Layout으로 들어가 대한민국으로 설정해주고 추가버튼을 누르면 셋팅이 된다. 그런데 beebox는 이걸 재부팅 할 때마다 매번 설정해줘야 되서 좀 불편한점이 있다. 가장 개선해야할 사항중에 하나라고 생각한다.


5. 비박스에서 다음과 같이 ifconfig를 쳐주고 자신의 ip주소를 확인한다. 이건 각자 다 다르기 때문에 잘 확인해 주어야 한다.



6. 칼리리눅스를 실행시켜 firefox를 실행시켜 beebox의 자신의 ip주소를 입력시키면 다음과 같이 화면이 나오면 정상적으로 잘 설치된 것이다.



이렇게 칼리리눅스하고 잘 연동되어야 웹실습이 가능해진다. 여기까지 안되면 웹해킹에 대해 실습이 불가능해지기 때문에 반드시 여기까지 완벽하게 설치가 되어야 한다. 필자는 맥환경에서 했지만 윈도우환경도 별차이는 없으니 잘 보고 설치하면 된다.

반응형
LIST

'웹해킹 > Bee-box' 카테고리의 다른 글

SQL 인젝션 기초  (0) 2017.12.26
iframe, ssl 인젝션  (0) 2017.12.25
PHP Command 인젝션 공격  (0) 2017.12.25
HTML 인젝션(2)-Stored  (0) 2017.12.25
HTML 인젝션(1)-Reflected  (8) 2017.12.25
블로그 이미지

만년필석사

,
반응형
SMALL

open내장함수로 조금더 심화적으로 단어장을 만들었다. 영어, 한국어를 입력하면 자동으로 vocabulary.txt에 기록되게끔 만들어봤다. 코드는 생각외로 간단하다.


out_file = open("vocabulary.txt", "w", encoding="utf-8")
q = 0

while True:
english_word = input("영어 단어를 입력하세요: ")
if english_word == "q":
break
korean_meaning = input("한국어 뜻을 입력하세요: ")
out_file.write("%s: %s\n" % (english_word, korean_meaning))
if korean_meaning == "q":
break
out_file.close()

while True문을 돌려서 변수를 만들어서 돌리면 된다. 그리고 q를 누르면 자연스럽게 종료가 된다. 주의할점은 습관처럼 사용될 수도 있는데 파일을 한번 열었으면 close 명령어로 닫아주는게 좋다. 저 위에 코드가 실행되면 결과는 다음과 같다.



영어단어들을 입력하고 q를 눌러주면 종료가 된다. 그리고 txt에 이렇게 기록되있으면 정상이다.



처음엔 어렵게 생각했었는데 코드를 짜고보니 역시 파이썬은 간단하다 라는 공식이 성립되는 것 같았다. 파이썬 말고도 C, java로도 충분히 생각하고 짤 수 있으니 다른 언어로도 짜보길 권장한다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

코딩에 빠진 닭  (0) 2017.08.15
필린드롬  (0) 2017.08.13
주민등록번호 가리기  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
블로그 이미지

만년필석사

,
반응형
SMALL

이름만 들어봐도 참 재밌다. 이건 txt파일을 파이참으로 가져와서 프로그램을 구성해야 했다. 나도 처음엔 encoding부분때문에 많이 헤맸는데 구글링으로 고치고 잘 실행이 되게 해놨다. 기본적으로 파이썬에서는 내가 저장한 파일을 어떻게 불러와서 쓸 것인지에 대한 개념이 잡혀야 이 문제를 해결할 수 있다. 문제의 핵심은 1~12월까지 일 매출 평균을 구하는 것이다.  일단 코드는 다음과 같다.


in_line = open("chicken.txt", "r", encoding="utf-8")
sum = 0
day = 0

for line in in_line:
data = line.strip().split(": ")
amount = int(data[1])
sum += amount # 일 매출을 더해준다.
day += 1 # 일 수 카운트

print(sum // day)
sum = sum + 1
print(line)

chickin.txt라는 파일을 저장해서 읽기전용으로 열겠다라는 명령문을 써줬다. 파이썬에선 open 내장함수를 써서 열어주면된다. 결과는 다음과 같다.



일매출합계는 위와같고 평균은 아래와 같다. 결국 이 문제 핵심은 open 내장함수를 어떻게 사용해서 txt파일을 오픈하고 그에 맞춰서 코딩해볼것인지가 관건인 것이었다. 생각보다 재밌는 문제였다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

단어장만들기  (0) 2017.08.15
필린드롬  (0) 2017.08.13
주민등록번호 가리기  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
블로그 이미지

만년필석사

,
반응형
SMALL

이것도 리스트, 문자열을 확실히 이해하고 있어야 풀 수 있다. 필린드롬이란 처음과 끝의 단어가 똑같다는 걸 의미한다. 예를 들자면 토마토, kayak 뭐 이런것들을 들 수 있다. 끝과 끝이 같다. 코드는 다음과 같다.


def is_palindrome(word):
list_word = list(word) //word를 리스트로 변환
for i in range(len(list_word) // 2):// 한쌍이라도 일치하지 않으면 바로 끝내버린다.
if list_word[i] == list_word[len(list_word) - i - 1]:
continue
else:
return False
return True

print(is_palindrome("racecar"))
print(is_palindrome("stars"))
print(is_palindrome("토마토"))
print(is_palindrome("kayak"))
print(is_palindrome("hello"))

저 위의 코드를 실행시키면 다음과 같다.


끝과 끝이 일치하면 true가 나오고 그렇지 않은 글자는 false가 나온다. 꽤 재밌는 알고리즘이었다. 전체적으로 for문이나 return 리스트, 문자열을 이해하고 있어야 풀 수 있는 문제들이었다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

단어장만들기  (0) 2017.08.15
코딩에 빠진 닭  (0) 2017.08.15
주민등록번호 가리기  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
블로그 이미지

만년필석사

,
반응형
SMALL

이것또한 형변환과 길이에 대해 얼마나 잘 이해하고 있는지를 보여주는 알고리즘이다. 사실 이건 좀 힘들게 풀었다.. 뒤에자리 가리기가 내 생각만큼 잘 되지 않았다. 코드는 다음과 같다.


def mask_security_number(security_number): //비밀번호 함수 정의
num_list = list(security_number) // security번호를 list로 변환해준다.
for i in range(1, 5): // 1~5번째까지 num_list길이에서 하나씩 빼준다.
num_list[len(num_list) - i] = "*"

total = ""
for i in range(len(num_list)):
total += num_list[i]
return (total) //리스트를 문자열로 복구시켜줘서 결과값을 낸다.



print(mask_security_number("880720-1234567"))
print(mask_security_number("8807201234567"))
print(mask_security_number("930124-7654321"))
print(mask_security_number("9301247654321"))
print(mask_security_number("761214-2357111"))
print(mask_security_number("7612142357111"))



위의 코드의 결과는 다음과 같다.



결과값에서 뒤에 4자리수만 잘 가려짐을 볼 수 있다. 좀 더 가리고 싶으면 for문을 수정해줘서 가려주면 된다. list

와 문자열의 이해도가 있어야 풀 수 있는 문제였다.



반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

코딩에 빠진 닭  (0) 2017.08.15
필린드롬  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
숫자야구게임  (0) 2017.07.23
블로그 이미지

만년필석사

,
반응형
SMALL

말그대로 자리수의 합 구하기 알고리즘이다. 생각보다 엄청 간단하다. 필자는 1~1000까지 자리수 합을 구해봤다. 코드는 다음과 같다. 


def sum_digit(num):
num = str(num) //num의 형변환
sum = 0
for i in range(len(num)): //각자리수의 합을 구하는 for문
sum = sum + int(num[i])
return sum

total = 0
for digit in range(1, 1001): //1~1000까지의 합을 정의해주는 for문이다.
total = total + sum_digit(digit)

print(total)

일단 num의 형변환을 먼저 시켜주고 for문을 넣어서 각 자리수의 합을 구해준다. 정답은 13501이다. 형변환의 개념에대해 얼마나 잘 이해하고 있는지, for문의 특성을 얼마나 잘 이해하고 있는지를 보여주는 알고리즘인 것 같다.

반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

필린드롬  (0) 2017.08.13
주민등록번호 가리기  (0) 2017.08.13
피타고라스 수  (0) 2017.08.13
숫자야구게임  (0) 2017.07.23
환전 프로그램  (0) 2017.07.23
블로그 이미지

만년필석사

,
반응형
SMALL

피타고라스의 정리는 중학교때부터 참 많이 들어봤던 정리이다. 3^2+4^2 = 5^5 이러한 정리를 피타고라스 정리라고 했다. 이것을 파이썬으론 for문으로 간단히 짤 수 있다. 코드는 다음과 같다.


for a in range(1, 333):// 1~333까지 반복한다.
for b in range(a + 1, 500): // 마지막 333에 1을 더해 500까지 반복해준다.
c = 1000 - a - b // 1000에다가 a,b구한값을 빼준다.
if a * a + b * b == c * c: //그리고 앞서말한 피타고라스 정리를 정의해주고
print(a * b * c) // 출력해준다.


처음에 어떻게 짤까 좀 고민을 많이 했었다. for문으로 어떻게 돌릴것인지 출력은 어떤식으로 할것인지 생각을 좀 해봤었던 거 같다.

저 코드를 실행시키면 다음과 같이 결과값이 잘 출력됨을 볼 수 있다.




그리고 저 위 코드 말고 또 하나의 코드를 제시해주자면 다음과 같다.


for a in range(1, 333):
for b in range(a + 1, 500):
c = 1000 - a - b
a < b < c and c < 500 // a<b<c 이 순으로 되어야 하며 c는 500이하여야 한다.
if c ** 2 == a ** 2 + b ** 2:
print(a * b * c)

저렇게도 짜봤지만 결과는 똑같았다. 피타고라스 정의는 여러가지 형태로도 짤 수 있다.(단지 코드가 좀 효율적인지 아닌지

를 잘 판단해야 한다. 간혹 비효율적으로 짠 코드들이 있는데 보면 무슨말인지 모를때가 있다.) 저 두 제시한 코드 이외에도

또 다른 코드로도 짤 수 있으니 그건 본인이 생각해보면 될 것 같다.


반응형
LIST

'프로그래밍언어 > PYTHON' 카테고리의 다른 글

주민등록번호 가리기  (0) 2017.08.13
자리수의 합 구하기  (0) 2017.08.13
숫자야구게임  (0) 2017.07.23
환전 프로그램  (0) 2017.07.23
온도변환프로그램  (0) 2017.07.23
블로그 이미지

만년필석사

,

CPU 스케줄링

운영체제 2017. 8. 5. 22:00
반응형
SMALL

CPU 스케줄링은 OS공부에 있어서 가장 중요한 파트라고 생각한다. 학부 교수님도 많이 강조하고 실제 대학원 면접이나 IT회사 면접에 갔을시 물어볼법한 중요한 내용이다.


1. CPU-입출력 버스트 사이클

- 프로세스 실행은 CPU버스트로 시작이 된다.

- 뒤이어 입출력버스트가 발생한다.

- 그 뒤에 또 다른 CPU버스트가 발생하며  마지막 CPU 버스트는 실행을 종료하기 위한 시스템 요청과 함께 끝난다.


<CPU -입출력 버스트의 실행 과정>



2. CPU 스케줄러


   -  단기스케쥴러(또는 CPU 스케쥴러)에 의해 실행한다.

   -  CPU가 유휴 상태가 될 때마다 운영체제는 준비 큐에 있는 프로세스들(PCB) 중에서 하나를 선택하여 할당한다.

       -  준비완료 큐에 있는 모든 프로세스들은 CPU에서 실행이 될 기회를 기다리며 대기하고 있다.


 


<CPU 버스트 시간의 도표>





3. 선점스케줄링과 비선점 스케줄링



* 선점스케줄링


-  우선순위가 높은 프로세스들부터 처리가 가능하다. 

-  빠른 응답시간을 처리하는 시스템에서 사용되며 유리하다.

-  현재 window, machintosh에서도 사용하고 있는 스케줄링 방법이다.

-  1) 실행 상태 -> 대기 상태,  ex) 입출력 요청, 자식 프로세스의 종료를 기다리는 호출

   2) 실행 상태 -> 준비 상태,  ex) 인터럽트 발생

   3) 대기 상태 -> 준비 상태,  ex) 입출력의 종료

   4) 실행 상태 -> 종료 상태,  ex) 프로세스의 종료


이런식으로 될때 1~4번까지 모두 실행이 가능한게 선점스케줄링 방식이고, 단점으론 오버헤드가 증가한다는 점이다.


* 비선점스케줄링

- 이미 할당된 자원을 다른 프로세스가 강탈할 수 없다.

- 응답시간 예측이 엄청 편하고 일괄처리 할 때 유용하다.

- 우선순위가 높은 프로세스들부터 처리하는게 아닌 순서대로 들어온대로 처리하기 때문에 우선순위로 처리되어야      하는게 안된다는 단점이 있다.

- 위에서 쓴 1~4번들중에 1, 4번에 해당이 되면 비선점 스케줄링 방식이다.


4. 디스패처


- CPU의 제어를 단기 스케쥴러가 선택한 프로세스에게 부여하는 모듈이다.

- 문맥을 교환한다.

- 사용자 모드로 전환하는 일을 하며 프로그램을 다시 시작하기 위해 사용자 프로그램의 위치로 적절히 이동하는 일을 한다.

- 디스패처는 모든 프로세스의 문맥교환시 호출되기 때문에 가능한 한 빨라야한다.

- 디스패처가 하나의 프로세스를 중단시키고 다른 프로세스를 실행하는데까지 걸리는 시간을 디스패처 지연이라고 말한다.


반응형
LIST

'운영체제 ' 카테고리의 다른 글

프로세스의 정의  (0) 2017.06.29
명령해석기  (0) 2017.01.30
운영체제서비스  (0) 2017.01.30
이중동작모드(Dual-Mode operation)  (0) 2017.01.15
멀티프로세싱(Multi Processing)이란?  (0) 2016.09.20
블로그 이미지

만년필석사

,