본문 바로가기

분류 전체보기

(41)
DVWA - Command Injection DVWA의 두 번째 실습 대상인 Command Injection이다. 주어진 IP 주소로 ping 명령을 수행하는 시스템이며 이를 이용하여 커맨드 인젝션을 실습해볼 수 있다. 커맨드 인젝션? 커맨드 인젝션이란 사용자가 취약한 웹사이트의 입력 폼이나 기타 방법을 이용하여 서버에 직접적, 간접적으로 명령어(Bash, CMD 등)를 전송하여 실행시키는 공격 방법이다. RCE(Remote Command Execution)이라고도 하며 입력 폼뿐만이 아니라 사용자의 쿠키값, 레퍼러, HTTP 헤더 등을 서버 측에서 읽어 적절한 검증 없이 시스템 호출에 포함한다면 공격 벡터가 될 수 있다. 이 공격이 가능하려면 웹 애플리케이션에서 사용자 입력을 기반으로 system(), exec(), os.system() 같은 시..
[DVWA 실습] Brute Force(high) 문제 해결 방법 High 레벨부터는 이전 포스트에서 분석했듯이 CSRF 토큰이 포함된다. 이는 서버가 받는 요청이 진짜 사용자가 HTML 폼에서 입력하여 보낸건지 확인하는 방법으로 현재 레벨에서는 숨겨진 폼에 포함되어 같이 전송되고 있다. 이 토큰값은 서버에서 클라이언트에게 보여줄 페이지를 동적으로 생성할 때 같이 생성되어 포함되며 사용자가 굳이 수정할 이유도, 그래서도 안되는 값이기 때문에 hidden 타입으로 지정되어 있다. 지금은 text 타입으로 수정했기 때문에 보이지만 아무튼 이런 식으로 숨겨진 input 태그에 포함하여 submit 시에 같이 웹 서버로 전송된다. 그래서 실제로 로그인을 시도할 때도 user_token이라는 파라미터로 같이 포함된 것을 확인할 수 있다. 만약 이 user_tok..
[DVWA 실습] Brute Force(medium) 문제 해결 방법 Medium 단계부터는 SQL Injection이 불가능하고 브루트 포스에 대한 방지책으로 로그인이 실패했을 때 2초동안 대기하게 된다. 기존에 1초도 안되서 빠른 응답을 받을 수 있었던 것과 달리 매 시도마다 올바른 비밀번호 입력을 제외하고는 무조건 2초가 걸리지만 반복적으로 들어오는 요청에 대한 대응이 없기 때문에 결국엔 공격에 성공하게 된다. Python requests 모듈 지난번에 작성한 코드를 조금 수정하여 medium 레벨에서 브루트 포스 공격을 수행했다. admin 계정의 비밀번호인 'password'가 리스트 상위에 있었기 때문에 몇 초 걸리지 않았지만 비밀번호가 좀 더 복잡하거나 리스트의 아래쪽에 있었다면 몇 분이 걸릴지 몇 시간이 걸릴지 모르는 만큼 브루트 포스 공격의..
[DVWA 실습] Brute Force(low) 문제 해결 방법 지난 포스트에서 분석한 소스 코드처럼 Low 단계에서는 브루트 포스에 대한 어떤 방어 체계도 갖춰져있지 않으며 SQL Injection에 대한 입력 필터링도 없기 때문에 쉽게 특정 계정에 접속할 수 있다. 현재 admin 계정에 접속하려면 "admin'#"처럼 입력해주면 비밀번호를 입력하지 않고도 로그인할 수 있지만 Brute Force를 실습하는 문제인 만큼 관련 툴을 사용하여 실습해보겠다. OWASP Zap - Fuzzer OWASP ZAP의 확장 프로그램인 Fuzzer를 사용하면 특정 위치에 무작위 값을 대입해서 여러 번 입력을 시도할 수 있다. 로그인에 실패했을 때는 아이디나 비밀번호나 틀리다는 메시지가 웹사이트에 나타나기 때문에 로그인에 성공했을 때의 웹사이트와 비교하면 HTML..
DVWA - Brute Force DVWA의 첫 번째 실습 대상인 Brute Force다. Username과 Password를 입력하여 admin 계정으로 로그인하는 것을 목표로 하고 있다. 브루트 포스? 브루트 포스는 무작위로 비밀번호를 조합하거나 사전 파일에 정의된 비밀번호를 하나하나 대입해보며 공격하는 방식(또는 두 가지를 합한 hybrid 방식)이다. 본래 어떤 시스템에서 특정 개체를 인증하려면 인증서라던지, OTP, 생체 인식 등 여러 분야의 인증 수단을 활용할 수 있지만 웹 애플리케이션에서는 대개 아이디와 비밀번호만을 이용하여 사용자를 인증하고 있다. 이 브루트 포스 공격은 비밀번호(혹은 아이디도)를 가능한 모든 문자를 조합하거나 많이 사용되는 문자를 조합하여 반복해서 로그인을 시도하는 공격으로 전통적이지만 시간만 충분하다면 ..
DVWA - 환경 구축 화이트 해커를 위한 웹 해킹의 기술 - YES24을 읽으면서 DVWA 실습을 위해 칼리 리눅스에 XAMPP를 설치하여 DVWA 1.9를 구축하였다. 칼리 리눅스 2020 설치 2020 Kali Linux 우선 칼리 리눅스를 Kali Linux Custom Image Downloads에서 VMWare 이미지로 설치한 후 기본적인 업데이트 및 한글 설정을 수행하였다. # 기본적인 업그레이드 sudo apt update sudo apt upgrade # 한글 입력기 및 폰트 설치 sudo apt install fcitx-lib* sudo apt install fcitx-hangul sudo apt install fonts-nanum DVWA 설치 DVWA는 최신 버전인 1.9 버전을 DVWA - Damn Vu..
유클리드 호제법이란? 개념 유클리드 호제법은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r’를 구하고, 다시 r을 r’로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 이는 명시적으로 기술된 가장 오래된 알고리즘으로서도 알려져 있으며, 기원전 300년경에 쓰인 유클리드의 《원론》 제7권, 명제 1부터 3까지에 해당한다. 예시 1071과 1029의 최대공약수를 구..
[백준 3460] 이진수 https://www.acmicpc.net/problem/3460 3460번: 이진수 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다. www.acmicpc.net 문제 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다. (1 ≤ T ≤ 10, 1 ≤ n ≤ 106) 출력 각 테스트 케이스에 대해서, 1의 위치를 공백으로 구분해서..
[백준 2501] 약수 구하기 https://www.acmicpc.net/problem/2501 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 문제 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면 6 ÷ 1 = 6 … 0 6 ÷ 2 = 3 … 0 6 ÷ 3 = 2 … 0 6 ÷ 4 = 1 … 2 6 ÷ 5 = 1 … 1 6 ÷ 6 = 1 … 0 그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다. 두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오. 코드 #include int main..
JAVA 웹 개발 환경 구축 - Eclipse + JDK + Tomcat 설치 및 연동 시작하며 본 포스팅에서는 Windows 64-bit 플랫폼을 기준으로 하며 아래의 버전을 사용한다. JDK : OpenJDK - Amazon Corretto 11 Eclipse : Eclipse IDE 2019-12 R Packages Tomcat : 9.0.30 1. JDK 다운로드 및 설치 중복되는 내용이므로 다음 포스트를 참고한다. JAVA 개발 환경 구축 - JDK, IntelliJ 설치 및 기본 환경 설정 JAVA 개발 환경 구축 - JDK, IntelliJ 설치 및 기본 환경 설정 JAVA 개발 환경 구축하기 1. JDK 설치 2. IntelliJ IDEA 설치 3. 기본 환경 설정 1. JDK 다운로드 및 설치 무료로 사용 가능한 OpenJDK인 Amazon Correto를 다운로드받아 설치..