분류 전체보기 28

[System Hacking] Dreamhack : Return to Library 문제 풀이 (RTL)

[문제 분석] checksec rtl위 코드를 통해 적용된 보호기법을 살펴보았다. Canary와 NX가 적용되었다. // Name: rtl.c// Compile: gcc -o rtl rtl.c -fno-PIE -no-pie#include #include const char* binsh = "/bin/sh";int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0); // Add system function to plt's entry system("echo 'system@plt"); // Leak canary printf("[1] Leak Canary\n"); printf("Buf: "); ..

System Hacking 2024.08.24

[System Hacking] Dreamhack : ssp_001 문제 풀이 (Canary)

Canary와 관련된 문제인 ssp_001을 풀어보겠다.환경에 대해서 친절하게 설명해줬지만 그냥 checksec으로 한번 더 해봤다. (wsl 사용)아키텍쳐는 i386-32를 사용한다 (32bit)Canary found인 것을 확인할 수 있다. nc로 접속해보았는데 뭐가 조건이 좀 많았다.1. Fill the box2. Print the box3. Exit코드를 자세히 살펴봐야 될 것 같다.[문제 분석]#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NUL..

System Hacking 2024.08.22

[System Hacking] - Dreamhack : Return to Shellcode 문제 풀이 (Canary)

System Hacking 중 Canary에 대한 문제, 이것을 오늘 풀어보겠다.문제 파일을 받을 수 있는데 원래의 c코드랑 이것에 해당하는 바이너리 파일 두개가 있다. 본 게시글 작성자는 wsl에서 문제를 풀었다.[문제 분석] 우선 r2s에 적용된 보안에 대해서 살펴보자면amd64를 사용하고 Canary found로 되어있는 것을 확인할 수 있다. 확인 command는 아래와 같다.checksec r2sCanary가 잘 걸려있는 것을 확인할 수 있다. // Name: r2s.c// Compile: gcc -o r2s r2s.c -zexecstack#include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0);}int..

System Hacking 2024.08.21

[WebHacking] - Dreamhack blind-command 문제 풀이

[문제 분석]접속하면 이게 다다. 코드를 보겠다. #!/usr/bin/env python3from flask import Flask, requestimport osapp = Flask(__name__)@app.route('/' , methods=['GET'])def index(): cmd = request.args.get('cmd', '') if not cmd: return "?cmd=[cmd]" if request.method == 'GET': '' else: os.system(cmd) return cmdapp.run(host='0.0.0.0', port=8000)코드 또한 간단하다.문제에서 Read the flag file XD가 설명이..

Web Hacking 2024.08.19

[WebHacking] - Dreamhack Carve Party 문제 풀이

따로 링크는 없고 문제 파일을 다운로드 받으면 html 파일이 하나 나온다. 그걸 실행시키면  이런 웹사이트가 등장한다. 10000번 클릭정도면 해볼만 하다. [Write Up]해당 웹사이트에서 f12를 누른 후 script 구문을 살펴보겠다.var pumpkin = [ 124, 112, 59, 73, 167, 100, 105, 75, 59, 23, 16, 181, 165, 104, 43, 49, 118, 71, 112, 169, 43, 53 ];var counter = 0;var pie = 1;function make() { if (0 String.fromCharCode(x)).join(''), x = 30, i = 0; ctx.font = "50px Comic Sans MS, cursive, ..

Web Hacking 2024.08.18

[WebHacking] - Dreamhack web-ssrf 문제 풀이(SSRF)

[문제 분석]웹 사이트에 접속하면 다음과 같은 창이 뜬다.Image Viewer를 클릭해서 해본 결과 밑의 결과가 뜬다.flag는 /app/flag.txt에 있다고 한다. 이것을 잘 찾아서 봐야될 것 같다. app.py에 대한 코드 분석을 해보겠다.#!/usr/bin/python3from flask import ( Flask, request, render_template)import http.serverimport threadingimport requestsimport os, random, base64from urllib.parse import urlparseapp = Flask(__name__)app.secret_key = os.urandom(32)try: FLAG = open("..

Web Hacking 2024.08.18

[WebHacking] - Dreamhack : file-download-1 문제 풀이 (File Vulnerability)

[문제 분석]서버에 접속하면 이런 웹사이트에 들어갈 수 있다. 아무거나 입력해서 upload 했을 시에 Home에 이렇게 내가 upload한 것을 볼 수 있다.저걸 클릭해서 들어가면 위와 같이 제목과 content가 나온다. 문제에서 flag.py를 다운받으면 플레그 획득이 가능하다고 했다.더 분석을 해보기 위해 app.py의 코드를 보겠다.#!/usr/bin/env python3import osimport shutilfrom flask import Flask, request, render_template, redirectfrom flag import FLAGAPP = Flask(__name__)UPLOAD_DIR = 'uploads'@APP.route('/')def index(): files = ..

Web Hacking 2024.08.18

[WebHacking] - Dreamhack image-stroage 문제 풀이 (File Vulnerability)

[문제 분석]접속하면 위와 같은 창이 뜬다. /flag.txt에 있는 정보를 뽑으면 된다. Upload 메뉴에는 실제 파일을 업로드 할 수 있는 기능이 있다. 0 ) { echo "Error: " . $error . ""; }else { if (file_exists($directory . $name)) { echo $name . " already exists. "; }else { if(move_uploaded_file($tmp_name, $directory . $name)){ echo "Stored in: " . $directory . $name; } } } }el..

Web Hacking 2024.08.18

[WebHacking] - Dreamhack command-injection-1 문제 풀이 (command injection)

Command Injection에 해당하는 기본 문제를 풀어보겠다. [문제 분석]서버에 접속하면 Ping을 보낼 수 있는 곳이 나온다.#!/usr/bin/env python3import subprocessfrom flask import Flask, request, render_template, redirectfrom flag import FLAGAPP = Flask(__name__)@APP.route('/')def index(): return render_template('index.html')@APP.route('/ping', methods=['GET', 'POST'])def ping(): if request.method == 'POST': host = request.form.g..

Web Hacking 2024.08.17

[WebHacking] - Dreamhack Mango 문제 풀이 (NoSQL Injection)

NoSQL Injection 문제를 풀어보겠다. [문제 분석]들어가면 나오는 사이트이다. 웹 서버에 접속해보겠다. 웹사이트에 들어가니 위와같은 화면이 뜨는게 끝이다.문제 파일을 받으면 js 와 json파일만 존재하는 것을 볼 수 있다.main.js 파일을 열어보겠다. const express = require('express');const app = express();const mongoose = require('mongoose');mongoose.connect('mongodb://localhost/main', { useNewUrlParser: true, useUnifiedTopology: true });const db = mongoose.connection;// flag is in db, {'uid':..

Web Hacking 2024.08.17