분류 전체보기
-
<Root-me> CSRF - 0 protectionWargame/Root-me = Web - Client 2021. 12. 24. 13:24
CSRF - 0 protection 인트라넷에 접속하기 위해 계정을 활성화시키라고 한다. 먼저 Register를 통해 woong으로 가입을 하고 로그인을 한다. Profile을 살펴보면 Status 체크박스가 비활성화되어있다. Private를 살펴보면 기다리라고 한다. Contact를 살펴보면 이메일과 코멘트를 입력할 수 있다. 문제 제목이 CSRF인 만큼, Contact를 통해 계정을 활성화시켜야 할 것 같다. Profile 페이지의 소스 코드를 살펴보면 우리에게 필요한 부분은 form 태그로 감싸진 부분이다. 필요한 부분만 추리면 그리고 action을 Profile의 full URL로 변경하고, status가 체크되어야 하므로 disabled를 checked로 바꾼다. 여기까지만 입력하면 form이 ..
-
<WEB Hacking> File VulnerabilityWEB Hacking 2021. 12. 23. 18:47
파일 공유 서비스를 개발할 때, 이용자가 업로드한 파일을 데이터베이스에 저장하는 것보다 서버의 파일 시스템에 저장하는 것이 개발하기 쉽고, 관리 효율도 높다. 그러나 반대로, 임의의 파일이 다운로드 되는 취약점이나, 악성 웹셸 파일을 업로드하여 임의의 코드를 실행할 수 있는 취약점을 발생시키기도 한다. 파일 업로드 취약점(File Upload Vulnerability) 공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점으로, 파일 시스템 상 임의의 경로에 원하는 파일을 업로드하거나 악성 확장자를 갖는 파일을 업로드할 수 있을 때 발생한다. 원하는 시스템 명령을 실행하는 원격 코드 실행 취약점을 유발한다. 파일 다운로드 취약점(File Download Vulnerabilit..
-
<Root-me> CSP Bypass - Inline codeWargame/Root-me = Web - Client 2021. 12. 22. 22:11
이름을 입력하라고 한다. 문제 제목이 CSP(Content Security Policy)니 응답 헤더에서 CSP를 먼저 확인해보면 "script-src 'unsafe-inline'"이므로 Inline Javascript(태그 내에 직접 자바스크립트 명령어를 작성하는 방법)을 수행할 수 있다. 다시 문제로 돌아와 아무 이름을 입력한다. CSP(Content Security Policy)를 설정했기 때문에 XSS에 대해 패치하지 않았다고 한다. 그리고 봇만 볼 수 있는 FLAG를 빼내라고 한다. URL을 보면 page?user=woong 부분을 보아 방금 입력한 이름이 GET 방식으로 전달되는 것을 알 수 있다. "XSS에 대해 패치하지 않았다"라고 하니 먼저, user=alert(1)을 입력해보면 요청이 ..
-
<WEB Hacking> Command InjectionWEB Hacking 2021. 12. 22. 12:15
■Command Injection 이용자의 입력을 시스템 명령어로 실행하게 하는 기법으로, 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생 ex) Python으로 개발된 웹 애플리케이션에서 입력한 임의의 IP에 ping을 전송 os.system("ping [user-input]") ex) Python으로 개발된 웹 애플리케이션에서 임의의 파일을 읽기 os.system("cat [user-input]") 위와 같은 함수를 사용할 때, 이용자의 입력을 제대로 검사하지 않으면 임의 명령어가 실행될 수 있음 => 리눅스 셸 프로그램이 지원하는 다양한 메타 문자 때문 ex) 메타 문자 메타 문자 설명 ex `` 명령어 치환 `` 안에 들어있는 명령어를 실행한 결과로 치환 $ echo `e..
-
<Webhacking.kr> old-29Wargame/Webhacking.kr 2021. 12. 21. 23:50
old-29 파일을 업로드할 수 있다. 파일 아무거나 제출하면 제출한 시간, 자신의 IP 주소, 파일명을 출력한다. FLAG는 다른 테이블에 있다는 것으로 보아, 현재 페이지는 제출한 시간, 자신의 IP 주소, 파일명을 칼럼으로 가지는 하나의 테이블인 것 같다. 페이지 소스 코드를 살펴보면 POST 방식으로 제출한다. Burp Suite로 time, ip, file이 삽입되는 순서를 확인할 수 있다. INSERT INTO 테이블이름 VALUES ('a', 'b', 'c'), ('d', 'e', 'f')의 형태로 다수의 데이터를 한 번에 넣을 수 있다. 이 특징을 이용하여 순서를 먼저 알아보기 위해 파일이 정상적으로 업로드되는 것으로 보아 INSERT INTO 테이블이름 VALUES (파일 이름, 제출한 ..
-
<Network> TCP/IP 방식의 응용 계층Network 2021. 12. 21. 16:28
■응용 계층 운영체제가 수신자에게 데이터를 전송할 뿐만 아니라 전송할 데이터를 생성해줌 이와 같이 전송하고자 하는 데이터, 페이로드를 생성해주는 계층이 바로 응용 계층 응용 계층에는 이론상 65,536개에 이르는 페이로드 생성 프로토콜이 있음 ex) DNS, HTTP 등 응용 계층에서는 이와 같이 사용자의 실제 정보를 저장하는 페이로드 생성 기능을 수행 이 때 운영체제에서는 응용 계층에 속하는 프로토콜을 고유한 식별자 번호로 인식하는데, 이것이 포트 번호 즉, 인터넷 공간에 존재하는 무수한 LAN 영역을 네트워크 ID를 이용해 구분하는 것처럼 응용 계층에 존재하는 무수한 프로토콜을 포트번호로 구분 포트 번호에는 해당 프로토콜에서 발생한 정보가 흐르는 가상의 통로라는 의미도 가짐 맥 주소의 OUI 부분을 ..
-
<Root-me> Javascript - Obfuscation 3Wargame/Root-me = Web - Client 2021. 12. 20. 22:53
비밀번호를 입력하라고 한다. 페이지 소스 코드를 보면 function dechiffre(pass_enc){ var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65"; var tab = pass_enc.split(','); var tab2 = pass.split(','); var i,j,k,l=0,m,n,o,p = ""; i = 0; j = tab.length; k = j + (l) + (n=0); n = tab2.length; for(i = (o=0); i < (k = j = n); i++ ){ o = tab[i-l]; p += String.fromCharCode((o = tab2[i])); if(i == 5) break;} for(i = (..