Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
name_reverser — CVE-2013-0156 취약점을 시연하는 간단한 Rails 앱 | Kitploit
도구/GitHubGitHub/terracatta/name_reverser
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubterracatta/name_reverser

name_reverser

CVE-2013-0156 취약점을 시연하는 간단한 Rails 앱

저장소 보기
13년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

== Rails에 오신 것을 환영합니다

Rails는 Model-View-Control 패턴에 따라 데이터베이스 기반 웹 애플리케이션을 만드는 데 필요한 모든 것을 포함하는 웹 애플리케이션 프레임워크입니다.

이 패턴은 뷰(표현이라고도 함)를 주로 HTML 태그 사이에 미리 만들어진 데이터를 삽입하는 역할을 하는 "단순한" 템플릿으로 분리합니다. 모델은 모든 비즈니스 로직을 보유하고 데이터베이스에 스스로 저장하는 방법을 아는 "똑똑한" 도메인 객체(Account, Product, Person, Post 등)를 포함합니다. 컨트롤러는 모델을 조작하고 데이터를 뷰로 보내 들어오는 요청(예: 새 계정 저장, 제품 업데이트, 포스트 표시)을 처리합니다.

Rails에서 모델은 Active Record라고 하는 객체-관계 매핑 계층에 의해 처리됩니다. 이 계층을 사용하면 데이터베이스 행의 데이터를 객체로 표시하고 이러한 데이터 객체에 비즈니스 로직 메서드를 추가할 수 있습니다. Active Record에 대한 자세한 내용은 link:files/vendor/rails/activerecord/README.html에서 확인할 수 있습니다.

컨트롤러와 뷰는 Action Pack에 의해 처리되며, 이 패키지는 Action View와 Action Controller의 두 부분으로 두 계층을 처리합니다. 이 두 계층은 상호 의존성이 높기 때문에 단일 패키지로 묶여 있습니다. 이는 Active Record와 Action Pack 사이의 관계가 훨씬 더 분리되어 있는 것과는 다릅니다. 이러한 각 패키지는 Rails 외부에서 독립적으로 사용할 수 있습니다. Action Pack에 대한 자세한 내용은 link:files/vendor/rails/actionpack/README.html에서 확인할 수 있습니다.

== 시작하기

  1. 명령 프롬프트에서 새 Rails 애플리케이션을 만듭니다. rails new myapp (myapp은 애플리케이션 이름입니다)

  2. myapp 디렉터리로 이동하여 웹 서버를 시작합니다. cd myapp; rails server (옵션은 --help로 확인)

  3. http://localhost:3000/에 접속하면 다음이 표시됩니다. "탑승을 환영합니다: Ruby on Rails를 이용하고 계십니다!"

  4. 안내에 따라 애플리케이션 개발을 시작하세요. 다음 리소스가 유용합니다.

  • 시작하기 가이드: http://guides.rubyonrails.org/getting_started.html
  • Ruby on Rails 튜토리얼 책: http://www.railstutorial.org/

== Rails 디버깅

때로는 애플리케이션에 문제가 발생합니다. 다행히 디버그하고 다시 제대로 실행하는 데 도움이 되는 많은 도구가 있습니다.

먼저 확인해야 할 곳은 애플리케이션 로그 파일입니다. server.log와 development.log에서 "tail -f" 명령을 실행하세요. Rails는 디버깅 및 런타임 정보를 자동으로 이 파일에 표시합니다. 디버깅 정보는 127.0.0.1의 요청에 대해 브라우저에도 표시됩니다.

컨트롤러 내에서 Ruby logger 클래스를 사용하여 코드에서 직접 로그 파일에 사용자 정의 메시지를 기록할 수도 있습니다. 예:

class WeblogController < ActionController::Base def destroy @weblog = Weblog.find(params[:id]) @weblog.destroy logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!") end end

결과는 로그 파일에 다음과 같은 메시지로 표시됩니다.

Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1!

logger 사용 방법에 대한 자세한 내용은 http://www.ruby-doc.org/core/ 에서 확인할 수 있습니다.

또한 Ruby 문서는 http://www.ruby-lang.org/ 에서 찾을 수 있습니다. 온라인에서 볼 수 있는 책도 여러 권 있습니다.

  • Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe)
  • Learn to Program: http://pine.fm/LearnToProgram/ (초보자 가이드)

이 두 책은 Ruby 언어와 일반적인 프로그래밍에 대해 빠르게 익힐 수 있게 해 줍니다.

== 디버거

Mongrel 또는 WEBrick 서버를 --debugger 옵션으로 시작하면 debugger 명령을 통해 디버거 지원을 사용할 수 있습니다. 이는 코드의 어느 지점에서든 실행을 중단하고 모델을 조사하고 변경한 다음 실행을 재개할 수 있음을 의미합니다! 디버깅 모드에서 서버를 실행하려면 ruby-debug를 설치해야 합니다. gems를 사용하는 경우 sudo gem install ruby-debug를 사용하세요. 예:

class WeblogController < ActionController::Base def index @posts = Post.all debugger end end

그러면 컨트롤러가 액션을 수락하고 첫 번째 줄을 실행한 다음 서버 창에 IRB 프롬프트를 표시합니다. 여기에서 다음과 같은 작업을 할 수 있습니다.

@posts.inspect => "[#<Post:0x14a6be8 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>, #<Post:0x14a6620 @attributes={"title"=>"Rails", "body"=>"Only ten..", "id"=>"2"}>]" @posts.first.title = "hello from a debugger" => "hello from a debugger"

...그리고 더 좋은 점은 런타임 객체가 실제로 어떻게 작동하는지 검사할 수 있다는 것입니다.

f = @posts.first => #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}> f. Display all 152 possibilities? (y or n)

마지막으로 실행을 재개할 준비가 되면 "cont"를 입력하세요.

== 콘솔

콘솔은 애플리케이션의 도메인 모델과 상호 작용할 수 있는 Ruby 셸입니다. 여기에서는 애플리케이션이 실행 중일 때와 마찬가지로 애플리케이션의 모든 부분이 구성되어 있습니다. 도메인 모델을 검사하고 값을 변경하며 데이터베이스에 저장할 수 있습니다. 인수 없이 스크립트를 시작하면 개발 환경에서 실행됩니다.

콘솔을 시작하려면 애플리케이션 디렉터리에서 rails console을 실행하세요.

옵션:

  • -s, --sandbox 인수를 전달하면 데이터베이스에 대한 모든 수정 사항이 롤백됩니다.
  • 환경 이름을 인수로 전달하면 해당 환경이 로드됩니다. 예: rails console production.

콘솔을 시작한 후 컨트롤러와 모델을 다시 로드하려면 reload!를 실행하세요.

irb에 대한 자세한 정보는 다음에서 찾을 수 있습니다. link:http://www.rubycentral.org/pickaxe/irb.html

== dbconsole

rails dbconsole을 통해 데이터베이스의 명령줄로 직접 이동할 수 있습니다. database.yml에 정의된 자격 증명으로 데이터베이스에 연결됩니다. 인수 없이 스크립트를 시작하면 개발 데이터베이스에 연결됩니다. 인수를 전달하면 rails dbconsole production과 같이 다른 데이터베이스에 연결됩니다. 현재 MySQL, PostgreSQL 및 SQLite 3에서 작동합니다.

== 내용 설명

생성된 Ruby on Rails 애플리케이션의 기본 디렉터리 구조:

|-- app | |-- assets | |-- images | |-- javascripts | -- stylesheets | |-- controllers | |-- helpers | |-- mailers | |-- models | -- views | -- layouts |-- config | |-- environments | |-- initializers | -- locales |-- db |-- doc |-- lib | -- tasks |-- log |-- public |-- script |-- test | |-- fixtures | |-- functional | |-- integration | |-- performance | -- unit |-- tmp | |-- cache | |-- pids | |-- sessions | -- sockets -- vendor |-- assets -- stylesheets -- plugins

app 이 특정 애플리케이션에 고유한 모든 코드를 보관합니다.

app/assets 이미지, 스타일시트 및 JavaScript 파일의 하위 디렉터리를 포함합니다.

app/controllers 자동 URL 매핑을 위해 weblogs_controller.rb와 같은 이름을 가져야 하는 컨트롤러를 보관합니다. 모든 컨트롤러는 ActionController::Base에서 파생된 ApplicationController에서 상속되어야 합니다.

app/models post.rb와 같은 이름을 가져야 하는 모델을 보관합니다. 모델은 기본적으로 ActiveRecord::Base에서 상속됩니다.

app/views WeblogsController#index 액션에 대해 weblogs/index.html.erb와 같은 이름을 가져야 하는 뷰의 템플릿 파일을 보관합니다. 모든 뷰는 기본적으로 eRuby 구문을 사용합니다.

app/views/layouts 뷰와 함께 사용할 레이아웃의 템플릿 파일을 보관합니다. 이는 뷰를 감싸는 공통 헤더/푸터 방식을 모델링합니다. 뷰에서 layout :default를 사용하여 레이아웃을 정의하고 default.html.erb라는 파일을 만드세요. default.html.erb 안에서 <% yield %>를 호출하여 이 레이아웃으로 뷰를 렌더링합니다.

app/helpers weblogs_helper.rb와 같은 이름을 가져야 하는 뷰 헬퍼를 보관합니다. 컨트롤러용 생성기를 사용할 때 자동으로 생성됩니다. 헬퍼를 사용하여 뷰의 기능을 메서드로 캡슐화할 수 있습니다.

config Rails 환경, 라우팅 맵, 데이터베이스 및 기타 종속성에 대한 구성 파일입니다.

db schema.rb에 데이터베이스 스키마를 포함합니다. db/migrate에는 스키마에 대한 모든 마이그레이션 시퀀스가 포함되어 있습니다.

doc rake doc:app을 사용하여 생성할 때 애플리케이션 문서가 저장되는 디렉터리입니다.

lib 애플리케이션별 라이브러리입니다. 기본적으로 컨트롤러, 모델 또는 헬퍼에 속하지 않는 모든 종류의 사용자 정의 코드입니다. 이 디렉터리는 로드 경로에 있습니다.

public 웹 서버에서 사용할 수 있는 디렉터리입니다. 디스패처와 기본 HTML 파일도 포함합니다. 웹 서버의 DOCUMENT_ROOT로 설정해야 합니다.

script 자동화 및 생성을 위한 헬퍼 스크립트입니다.

test 유닛 및 기능 테스트와 픽스처가 포함됩니다. rails generate 명령을 사용하면 템플릿 테스트 파일이 생성되어 이 디렉터리에 배치됩니다.

vendor 애플리케이션이 의존하는 외부 라이브러리입니다. plugins 하위 디렉터리도 포함합니다. 앱이 Rails를 frozen 상태로 유지하면 해당 gems도 vendor/rails/ 아래에 위치합니다. 이 디렉터리는 로드 경로에 있습니다.

도구 다운로드