목록전체 글 (15)
학습 기록일지
보호되어 있는 글입니다.
웹 2레벨 문제. 예전에 안풀어서 풀어봄 힌트가 너무 친절하다... flag파일의 절대경로와, 어떤 취약점이 이용되는지까지 알려줌 LFI 도움(PHP Wrapper) : https://opentutorials.org/module/4291/26819 첫번째 index.php 파일은, 맨 하단에 php스크립트로 page 인자를 받아와 .php를 붙여 include 해주는걸 알수있음 include 함수는 해당하는 파일의 내용을 출력하고, 스크립트가 있다면 실행한다. 따라서 PHP 취약점에 종종 사용되곤 함 두번째 list.php 파일의 소스를 해석하자면, ../uploads/ 경로 내의 파일을 읽어서 태그로 감싸 출력해준다. 결과는 아래 이미지 참고 마지막으로 view.php 는 file 인자로 해당 파일 안..
웹 3레벨 login관련 문제이다. writeup을 작성할때 https://codethief.io/ko/sending-simultaneous-requests-using-python/ 도움이 많이됨 #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for, session, g import sqlite3 import hashlib import os import time, random app = Flask(__name__) app.secret_key = os.urandom(32) DATABASE = "database.db" userLevel = { 0 : 'guest', 1 : 'ad..
출처 : https://corinediary.tistory.com/2 깃허브에 파일을 올리기 위해선 아래의 순서대로 따라하면 됨 1) git 설치 : https://git-scm.com/downloads 2) github 저장소 만들기 3) 내 컴퓨터에 원격 저장소 가져오기 나같은 경우 임의로 D드라이브에 git 이란 폴더를 만들었다. 4) git 초기 설정 #git config --global user.name [깃허브 가입 시 이름] #git config --global user.name [깃허브 가입 시 이메일] 5) 깃허브 저장소 입력 #git clone [저장소 주소] 6) git 상태확인 #git status //에러났을때 이걸로 종종 확인가능, 상태확인 파일을 깃으로 전달하기 전에 add >..
드림핵 웹 3레벨 문제 문제를 풀때는 할만했는데 정리하려고 할때마다 머리가 따뜻해지는거같음 CSP를 다루며 관한 자세한 설명은 아래 링크 참고 https://krampus.tistory.com/96 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 #!/usr/bin/env python3 import os import shutil from time import sleep from urllib.p..
2레벨 마지막 문제이다. 문제의 보호기법을 이러하다 sint 문제의 소스코드 Line 6~19 : 기본설정 Line 21~24 : /bin/sh 주입이 가능한 get_shell 함수 Line 26~48(Main) : - 28 : buf를 256크기만큼 선언 - 29 : int 형 size 선언 (초기화 X) - 33 : Segmentation Fault 인터럽트가 발생하면 get_shell 함수가 실행되게 설정한다 - 36 : 숫자를 입력받는다 - 38~42 : 만약 입력받는 숫자가 256보다 크거나, 0보다 작다면 프로그램을 종료함 - 44,45 : read함수로 입력을받는데.... 문제의 요지가 에러발생시켜서 get_shell을 실행시키는게 목표인거같다.(아마도) 문제의 흐름은 다음과 같다. Size..
드림핵 레벨2 3번째 문제이다 out_of_bound 취약점을 다룰거같다. OOB(Out Of Boundary) 취약점이란 버퍼의 길이를 벗어나는 인덱스에 접근할 때 발생하는 취약점이다. checksec 로 보호기법을 검사해보면, NXbit, Partial RELRO 메모리 보호기법을 제외한 CANARY 가 활성화되어있는걸 확인할 수 있다. out_of_bound의 소스코드를 해석해보자 7 Line : 전역변수 name을 16크기로 선언 9~13 Line : 포인터변수 command를 10크기로 선언. cat, ls, id, ps, file ./oob를 담고있음 14~27 Line : 기본세팅 29~44 Line (Main) : - 31 : idx 정수형 변수 선언 - 33 : 기본세팅 함수 실행 - 3..
드림핵 포너블 2레벨 2번째 문제이다. off_by_one 취약점을 이용한 문제 gdb에서 checksec 명령어로 살펴보니 NX-bit와 Partial RELRO 메모리 보호기법이 걸려있다 소스를 분석해보자 6~10 Line : 프로그램을 종료하는 alarm_handler 함수 12~19 Line : 기본세팅 21~27 Line : len이라는 int형 지역변수 선언. 문자열을 배열에 넣고 ptr[len] = \0을 함 29~32 Line : 쉘을 휙득 가능한 get_shell 함수 34~56 Line (Main) : name버퍼를 20크기로 선언. age 변수를 1로 선언. 함수 initialize 를 호출하여 알람을 설정해주고, read_str 함수로 선언해줬던 name버퍼와, 20이란 고정된 길이..