분류 전체보기

    Root-me : File upload - Null byte

    Root-me : File upload - Null byte

    느낌상 웹쉘을 올려야 하는 문제인 것 같다. NB : only GIF, JPEG or PNG are accepted 다음과 같은 필터링이 있기 때문에, 다음과 같이 이름을 수정해서 올려주면 된다. 찾으라는 문구가 있을줄 알았는데 바로 패스워드가 있다. Clear!

    Root me : Directory traversal

    Root me : Directory traversal

    이전 문제에서 살짝 봤던 Directory Traversal 문제다. photo gallery 의 hidden section 을 찾아야 한다. 먼저 문제를 보면. 이런 방식으로 다뤄진다. galerie = "경로" 를 입력해주는 방식인가 보다. 이제 숨겨진 것을 찾기 위해서 galerie 값에 경로들을 입력해주면 된다. 아무 입력값도 주지 않았는데 이렇게 나왔다. 86hwnX2r가 숨겨진 디렉토리 인가보다. 들어가보니 비밀번호 파일이 있다. 이건 인텐이 아닌것 같고, 원래는 DotDotpwn 이라는 툴을 이용해서 해야 하는 것으로 알고 있다. 다음과 같이 이용하면 된다. 근데 너무 오래걸리니까 뭐 생략하고 위에 풀이로 가자. Clear!

    Rootme : Insecure Code Management

    Rootme : Insecure Code Management

    문제를 보면 생각보다 별건 없다. 다른 지정된 입력값이 있는 것도 아니고, (guest/guest or admin/admin) 인젝션이 되는것도 아니다. 그래서 문제 지문의 documentation 을 보았다. git 에 대한 거더라. 여기서 File Directory Traversal 문제가 된다. 흔히 이제 git을 사용해보면 clone 된 repository가 다음과 같이 생성이 된다. 여기 생기는 저 .git 을 통해서 내용을 보는 것이다. 한번 해보자. 뭔가가 나왔다. 여기 있는 파일들을 잘 보자. 보통 이런 정보는 로그에 기록으로 남으니까 log 를 보자. HEAD 파일이 존재하고 다음과 같은 내용이 있다. 커밋 내용이 적혀 있는데, 이제 비밀번호를 바꾼 커밋이 있으니 해당 부분을 보면 되겠다..

    Root-me :  JSON Web Token (JWT) - Introduction

    Root-me : JSON Web Token (JWT) - Introduction

    admin 으로 로그인 하라고 씌여있다. (the objective is to login as admin) JWT 문제인 만큼 JWT값을 확인해 보도록 하자. (since it is a JWT problem, lets find JWT value) 먼저 guest로 로그인하면 어떤 값이든 줄것 같다. (login as guest would give us some values...) 쿠키값에 JWT 값이 들어있었다. (I could find JWT value inside the cookie) 한번 디코딩해 보자.(lets decode it) jwt.io/ 우리는 payload 값만 admin으로 변조하면 성공이다.(we have to change the username value into admin) 여기서..

    Dreamhack : csrf-1

    xss 문제랑 상당히 양식이 비슷하다. 해야하는 행동도 비슷할 것 같다. 먼저 코드를 보자. #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for, session, g from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' def read_url(url, cookie={'name': 'name', 'value': ..

    DreamHack : xss-1

    일단 3개의 페이지가 나오는데 돌아가면서 구경을 좀 했다. xss는 코드를 주입하는 부분이고, memo는 입력된 코드를 볼수 있는데 flag에서 입력을 하면 다 hello로 나온다. memo 에 가서 hello 대신 스크립트를 넣어주면 되겠다고 생각했다 ?memo = 이렇게 넣어주려고 했는데, 해당 문자열이 필터링 당하는 것 같다. "

    DreamHack : Basic ROP x64

    Ubuntu 16.04 Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000)#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } int main(int argc, char *argv[]) { char buf[0x40] = {}; initi..

    DreamHack : ssp_001

    ssp_001 #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } void print_box(unsigned char *box, int idx) { printf("Element of index %d is : %02x\n", idx, box[idx]); } void menu() { puts("[F]..

    DreamHack : ssp_000

    Ubuntu 16.04 Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } int main(int argc, char ..

    DreamHack : Sint

    #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } int main() { char buf[256]; int size; initialize(); signal(SIGSEGV, get_shell); printf("Size: "); scanf("%d", &size); if (size > 256 || s..