전체 글 249

File Upload CTF 풀이 #1

파일 업로드를 위한 간단한 웹 쉘 파일을 하나 생성하자 메모장을 켜서 다음 코드를 작성해줍니다 작성 후 php 파일을 만들어주기 위해 다른 이름으로 저장을 눌러준다. 모든 파일로 바꿔주고 인코딩 방식은 UTF-8 로 해줍니다. 이제 webshell.php 파일이 완성되었습니다. 자 이제 간단한 webshell을 저장했으니 풀 CTF 페이지로 가봅니다. 로그인을 해주고 게시판으로 가줍니다. 전에 연습용으로 적었던 글이 있는데 저건 아닙니다. 글쓰기를 눌러줍니다. 제목과 내용 그리고 파일을 첨부할 수 있는 칸이 구현되어 있습니다. 이렇게 쓰고 올려줍니다. 글 작성에 성공했습니다 Burp Suite로 대략적인 HTTP History를 살펴봤는데 업로드시킨 위치 정보를 찾을 수가 없었습니다. 그래서 다운로드를 ..

[File Upload 공격 정리] 내가 만든 웹사이트를 웹 쉘로 장악하기

집에 있는 데스크탑 pc에서 가상머신으로 웹 서버를 실행시켜 뒀습니다. 포트포워딩까지 끝냈더니 노트북으로 사이트를 들어가니 잘 접속됩니다. 다음번엔 도메인도 한번 구해봐야겠어요 메모장으로 간단한 웹 쉘도 만들었습니다. 글쓰기 버튼을 눌러봅니다. 글 작성 페이지가 잘 뜹니다. 가상머신 쬐끄만 창에서만 보던 걸 노트북 화면으로 띄우니까 감회가 새롭네요 게시판 답게 어그로가 끌릴만한 제목으로 webshell.php를 업로드 해줘보겠습니다. 웹 서버 코드에 allowed_mime_type 변수를 리스트로 생성만 해놓고 조건문으로 걸지 않았더니 php 파일도 잘 등록이 됩니다. 현재 제 서버는 File Upload 공격에 엄청나게 취약하다는 뜻이겠죠 Burp suite 브라우저를 열어 HTTP history를 살..

[10주차] 해킹 스터디 정리 - File Upload 공격

** 모의해킹 워라벨 -> 정보보안팀 모의해킹 팀. 보안컨설팅. IT -- File Upload What : 공격자가 임의의 파일을 업로드 할 수 있는 공격 -> 웹 쉘. -> 서버 장악. 웹 쉘이라는 건 사실 한 줄로도 만들 수 있음 ** Point ** 1. 우리가 웹 서버에서 실행할 수 있는 파일 2. 그걸 실행할 수 있어야함. (가장 중요) -> 업로드된 파일의 위치를 알아야 함. 만약 mal.php 라는 파일이 있다면? 웹 브라우저로 우리가 올린 파일을 요청하면 됨. 그럼 was에서 php 파일을 실행하고 우리(요청자)에게 전해주게 됨 웹 쉘을 띄웠을 때 가장 먼저 대부분 어떤 일을 할까? 대부분 소스코드를 탈취함 ** 소스코드 탈취. -> DB를 탈취 한다는 말과 동일 > 왜냐면 DB의 계정 ..

해킹/Web Hacking 2023.06.01

[javascript] 배열 내장 함수 - push, splice, slice, pop, shift, unshift

웹컴파일러는 IDEONE.COM을 사용했습니다. 거의 모든 현존 언어를 바로바로 실행하고 결과를 볼 수 있어 좋은 사이트입니다. 배열 내장 함수를 테스트 하기 위해 간단한 요소 5개짜리 배열을 생성합니다. 1. push push 내장함수는 배열의 끝에 하나 이상의 요소를 추가하고, 리턴값으로 제일 최근 길이를 반환한다. push는 원본 배열을 바꿀 수 있는 함수이다. 터미널에 push함수로 array2 변수에 저장합니다. array와 array2 둘 다 찍어보니 array는 배열 끝단에 제가 추가한 문자열에 추가되고 array2는 6을 반환합니다. 2. splice splice는 배열의 기존 요소를 삭제 또는 교체하거나 추가하여 배열을 변경합니다. 원본 배열을 바꾸고, 이 때 삭제시킨 요소를 다시 반환합..

해킹 기법 - Hash Cracking

케빈 미트닉 > 사회공학기법의 달인 전화 해킹. * 보안! 돈 주고 사는 프로그램, 솔루션이 아니다. rsh -> ssh rlogin R 서비스 . ( Remote ) 홈디렉토리. .rhosts. IP주소 JSZ : IRC IP 스푸핑으로 인증을 다 뚫어버릴 수 있음 공격 원리 TCP Session Hijacking > 클라이언트 pc는 syn 대답을 못하게 마비를 시켜버리고, 공격 pc로 서버에 syn을 날리면 서버가 클라이언트 pc에 synack를 보내고 다시 공격 pc가 ack를 날려서 완성시킨다. (클라이언트 pc는 syn응답을 하지 못하는 마비상태이므로) * TCP / UDP 데이터를 보내는 방법의 차이 - TCP : 데이터 잘 보내는 것 - UDP : 막 보내는 것 * TCP 연결 과정 3 W..

PHP에서 다른 파일 포함하기 - include, require

웹 서버를 열고 사이트를 작성하다보면 오류가 나거나 수정이 필요할 때가 있습니다. 그럴 때, php파일 수가 적으면 다행이지만, 파일 수가 많고 고쳐야 할 변수의 수가 쏟아진다면 정말 멘붕이 아닐 수 없습니다... 그럴 때 사이트를 작성하면서 DB연결이라던지, 통용되는 변수들을 PHP 파일에 모아놓고 다른 파일에 포함하는 식으로 프로젝트를 작성해가면 PHP 파일 하나만을 수정하면 해결되는 경우가 많습니다. 사용되는 함수는 다음과 같습니다. include include_once require require_once test를 위해 quest.php 파일과 require.php파일을 만들어줍니다. require.php에는 Hi! 라는 문자열을 $name 이라는 변수에 저장합니다. include는 파일이 없어..

개발/웹 개발 2023.05.29

[Virtualbox 포트포워딩] 내 웹 서버 다른 컴퓨터로 접속하기

포트포워딩이란? 외부 접속을 위해서는 외부의 기기가 내부에 있는 컴퓨터나 서버가 연결된 공유기를 통과해야 합니다. 공유기는 방화벽 역할을 하기 때문에 내부 컴퓨터에 접근이 가능하도록 하려면 특정 포트를 열어줘야 합니다. 외부의 기기에는 고정된 IP만 전달하고 외부 기기가 접근할 수 있도록 내부의 공유기 관리자에서 설정하는 과정이 포트포워딩입니다. 우선 가상머신 Ubuntu의 터미널을 엽니다. 포트포워딩을 위해선 가상 머신의 IP주소를 알아야 하는데 우선, net-tools라는 것을 깔아야 합니다. sudo apt install net-tools 그 후, ifconfig 명령어를 입력하면 ip를 확인할 수 있다. 그 후, Virtualbox에서 해당 가상머신을 누르고 설정을 누릅니다 네트워크 탭에 들어갑니..

[9주차] 게시판 구현 #7 - File Upload 기능 만들기

이번에는 File Upload 기능을 구현해보겠습니다. 해킹에 있어 File Upload 라는 공격이 있는데, 차후에 이 공격을 기반으로 한 웹 쉘을 이용해 제가 만든 웹 서버를 탈취해볼 계획입니다. 우선, 데이터베이스에 File 컬럼을 추가해줍니다. 여태까진 터미널에서 데이터베이스에 컬럼을 추가하거나 다양한 작업을 했지만, 이번에는 phpmyadmin을 한번 사용해보겠습니다. localhost/phpmyadmin로 들어가면 접속할 수 있습니다. 원하는 테이블로 이동합니다. 스크롤을 내리면 몇 개의 컬럼을 추가할지, 어디에 추가할지 선택할 수 있습니다. 실행 버튼을 누릅니다. 그럼 이렇게 이름과 종류를 선택할 수 있습니다. varchar(100)으로 설정해주고 NOT NULL을 위해 NULL 체크를 풀어..

개발/웹 개발 2023.05.27

GitHub 첫 이용해보기 - 프로젝트 Commit 하는 법

프로젝트를 작성해나가다 보면 다른 컴퓨터에서 편하게 그 저장 시점까지 받아서 다시 작성하고싶은데, 항상 어딘가 넣어다니긴 그렇고 프로젝트 파일이다 보니 일일히 클라우드에 올리는 것도 번거롭다. 그런데 이런 생각을 개발자들이라면 다 해봤을 것이다. 그런 생각에서 GitHub은 아주 유용한 도구가 될 수 있다. 우선, GitHub.com에 들어가 가입해준다. Sign up for GitHub을 누르면 이제 가입할 수 있는 창이 나옵니다. 하나하나 작성하다보면 Create 버튼이 나옵니다. 몇 가지 인증 절차를 거치면 바로 start repository를 할 수 있게 창이 나온다. 그럼 이제 터미널을 열어 프로젝트가 있는 곳으로 이동해줍니다. 그 후, git init 명령어를 통해 git을 실행시켜 줍니다. ..