본문 바로가기

드림핵

(68)
[드림핵 Reverse Engineering] Stage 3 [Stage 3] Computer Architecture #컴퓨터구조 #명령어집합구조 #인텔x86-64 - 컴퓨터 구조(Computer Architecture) : 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법 > 컴퓨터의 기능 구조에 대한 설계 : 컴퓨터가 연산을 효율적으로 하기 위해 컴퓨터에 필요한 기능 설계 ex. 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조 > 명령어 집합구조(Instruction Set Architecture, ISA) : CPU가 처리해야하는 명령어 설계 ex. 인텔 x86, x86-64, ARM, MIPS, AVR 등 > 마이크로 아키텍처(Micro Architecture) : CPU의 회로(하드웨어적) 설계 ex..
[드림핵 Reverse Engineering] Stage 1,2 [Stage 1] #서론 - 리버스 엔지니어링(Reverse Engineering, 리버싱, 역공학) : 완성된 제품을 해체하고 분석하여 구조와 기능, 디자인을 파악하는 것 - 리버싱의 용도 > Good Case 1. 프로그램의 보안성 평가 2. 악성코드 분석 > Bad Case 1. 프로그램 불법 크랙 2. 게임핵 [Stage 2] #바이너리 #컴파일 - 프로그램 : 연산 장치가 수행해야 하는 동작을 정의한 일종의 문서 - 바이너리(프로그램) : Stored-Program Computer에서 프로그램을 이진(Binary) 형태로 저장하므로 프로그램을 바이너리라고 하기도 함. - 프로그래밍 언어(Programming Language) : 프로그램을 개발하기 위해 사용하는 언어 > 고급 언어 C, C++,..
[드림핵 워게임] Apache htaccess 문제 사이트에 접속하면 처음으로 보이는 페이지이다. 파일을 업로드할 수 있는 폼을 볼 수 있다. 파일을 업로드 해본다. 파일이 /upload에 저장되고 클릭해보면 파일이 실행된다.
[드림핵 워게임] baby-sqlite 문제 사이트에 처음 접속하면 보이는 페이지이다. /login으로 들어가면 로그인 폼을 볼 수 있다. if __name__ == '__main__': os.system('rm -rf %s' % DATABASE) with app.app_context(): conn = get_db() conn.execute('CREATE TABLE users (uid text, upw text, level integer);') conn.execute("INSERT INTO users VALUES ('dream','cometrue', 9);") conn.commit() 코드를 살펴보면 테이블 구조와 INSERT된 레코드 한 줄을 볼 수 있다. 해당 계정으로 로그인을 해보면 Good! 이라는 결과가 뜬다. with app.app..
[드림핵 워게임] random-test 문제 사이트에 접속하면 처음으로 보이는 페이지이다. 알파벳 소문자와 숫자로 이루어진 4자리 문자열을 사물함 번호에 입력하고 100 이상 200 이하의 정수를 자물쇠 비밀번호에 입력해보았다. Wrong! 이라는 결과가 뜬다. 이제 코드를 살펴본다. @app.route("/", methods = ["GET", "POST"]) def index(): if request.method == "GET": return render_template("index.html") else: locker_num = request.form.get("locker_num", "") password = request.form.get("password", "") if locker_num != "" and rand_str[0:len(lo..
[드림핵 워게임] web-deserialize-python 문제 사이트에 처음 접속하면 뜨는 페이지이다. /create_session 페이지에 접속해본다. 값을 입력해본다. @app.route('/create_session', methods=['GET', 'POST']) def create_session(): if request.method == 'GET': return render_template('create_session.html') elif request.method == 'POST': info = {} for _ in INFO: info[_] = request.form.get(_, '') data = base64.b64encode(pickle.dumps(info)).decode('utf8') return render_template('create_ses..
[드림핵 워게임] file-csp-1 문제 사이트에 접속하면 처음 보이는 페이지이다. TEST YOUR CSP!라는 문구가 나오는데, CSP란 Content Security Policy의 약자로 XSS 공격을 막기 위해 지정한 규칙을 만족하는 스크립트 또는 CSS 만 허용하는 정책이다. /test 페이지로 들어가보면 CSP 입력창이 뜬다. Test your CSP Your own CSP test.html의 코드를 살펴보면 입력폼을 전송하면 /live로 넘어가는 것을 확인할 수 있다. @APP.route('/live', methods=['GET']) def live_csp(): csp = request.args.get('csp', '') resp = make_response(render_template('csp.html')) resp.head..
[드림핵 워게임] mongoboard 문제 사이트에 접속하면 처음으로 볼 수 있는 페이지이다. MongoDB에 저장된 게시물 목록을 볼 수 있고 게시물을 작성할 수 있는 기능이 있는 것 같다. 맨 위에 있는 게시물을 클릭해보면 World! 라는 게시물 내용을 볼 수 있다. no가 없는 admin이 작성한 FLAG라는 게시물을 클릭해보면 Secret Document!라는 alert창이 뜨고 내용을 보여주지 않는다. var boardSchema = new Schema({ title: {type:String, required: true}, body: {type:String, required: true}, author: {type:String, required: true}, secret: {type:Boolean, default: false}, p..