How to show image, not download in nodejs express

const attachment = await AttachmentAPI.get_file_by_id(attachment_id); /* ... */ const filename = attachment.filename; const extension = filename.split('.').pop().toLowerCase(); /* ... */ res.contentType(`image/${extension}`); /* ... */ try { const content = await fs.readFileSync(attachment.path); res.end(content); } catch (error) { // Error Handling } Use res.end(), not res.send() OK?

How to connect to MySQL running in Docker

고등학교 때만 해도 'Docker는 어렵다!'라는 생각이 머릿 속에 박혀있던 탓에, Dockerizing을 하지 않았다. 그게 심지어 해킹대회 문제였을지라도 Linux의 기본 RWX 권한을 사용해 시스템을 구축했었다. docker-compose 라는 도구를 알게 되고, 회사에서도 반복적으로 Dockerizing을 한 결과 Docker를 능수능란하게 다룰 수 있게 되었다. Docker 안에 데이터베이스 서버를 넣고 해당 서버에 접속하기 위한 2가지 방법이 있는데 오늘은 그것을 까먹지 않기 위해 적어보려고 한다. 방법 1. mysql -h localhost -P 3306 --protocol=tcp -u root -p mysql-client에 --protocol 옵션을 사용해서 접속하는 방법. 방법 2. su..

재밌는 그누보드 RXSS

0. 개요 회사에서 사이드프로젝트 느낌으로 오픈소스 CMS 분석을 하고 있다. 고등학교 1학년 때부터 그누보드를 취약점 분석해보겠다고 말만 하다가 처음으로 진지하게 분석해보고 있는데, 생각보다 취약점을 쉽게 찾을 수 있었다. 거의 RXSS이긴 했지만 그래도 취약점은 취약점이니깐 🤭 ㅎ 1. 취약점 분석 🎮 그누보드만의 특징이라고 하면 이것을 빼놓을 수 없다. 아래는 그누보드를 한번이라도 분석해 본 사람이라면 알 common.php 의 코드이다. common.php는 거의 모든 파일에서 include 되어 실행되며, extract() 함수를 사용하여 사용자로부터 변수를 입력받는다. 이 점 덕분에 변수를 편하게 사용할 수 있다는 점이 장점이지만, 보안 취약점에 노출된다는 큰 단점이 생긴다. $_GET과 $_..

여자친구 해킹 시도한 중국인 해커들 뚜까팬 썰

사건 개요 👽 어느날 여자친구랑 같이 있다가 여자친구 핸드폰으로 문자메시지가 착신되었다. 정확히는 기억이 나질 않는데, 여자친구가 클릭해보고 나서 '이 페이지는 위험합니다'라는 메시지가 떴다고 알려줘서 피싱 사이트겠다고 추측했다. 그냥 호기심에 저 URL을 분석해보기 시작했다. URL 분석 🤺 문자에 첨부된 URL에 curl을 통해 HTTP Request를 보냈더니 아래와 같은 Response가 도착했다. ➜ ~ curl -lvvv http://reurl.kr/464D5677VB * Trying 210.180.118.169... * TCP_NODELAY set * Connected to reurl.kr (210.180.118.169) port 80 (#0) > GET /464D5677VB HTTP/1.1..

경희대학교 SW중심대학사업단 사이트 취약점 분석

0. 개요 경희대학교 사이트를 둘러보면서 도장깨기를 하는 중이다. 거의 일주일에 하나씩 분석하면서 취약점 여러개를 찾아봤다. 일단 SW중심대학사업단 홈페이지는 SIRSOFT사에서 개발한 '그누보드'를 기반으로 만들어졌다. 보통 이러한 사이트들은 업데이트를 주기적으로 하지 않기 때문에 '그누보드' 1-day 취약점에도 취약한 편이다. (개인적으로) 그누보드에서 1-day를 사용하는 것은 가오가 살지 않기 때문에 그냥 사이트 자체에서 취약점을 찾아보기로 했다. 1. GNUBOARD PDF Plugin SQL Injection을 통한 데이터베이스 누수 추가예정 루삥뽕

경희대학교 컴퓨터공학과 사이트 취약점 분석

0. 개요 경희대학교에는 컴퓨터공학과, 소프트웨어융합학과로 이루어진 소프트웨어융합대학 단과대가 있다. 나는 컴퓨터공학과에 속해있고, 학과 웹사이트를 보면서 지속적인 유지보수가 되지 않고 있다고 느꼈고 바로 취약점을 찾아보았다. 회원가입시 중복 아이디 많이 취약해서 취약점 분석을 시작한지 5분도 채 되지 않아 취약점을 찾았다. 일단 가장 큰 Logical bug가 존재했다. 1. 아이디 중복 우회를 통한 관리자 권한 탈취 추가 예정 2. 로그인 과정에서의 SQL Injection을 통한 관리자 권한 탈취 추가 예정 3. 검색 부분에서의 SQL Injection && WAF Bypass 추가 예정 4. 관리자 기능에서 파일 업로드 && 파일 업로드 확장자 우회 && WAF Bypass를 통한 Webshell..

Django How to delete superuser

Create Django Superuser $ python manage.py createsuperuser Delete Django Superuser (venv) $ python manage.py shell Python 3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django.contrib.auth import get_user_model >>> >>> User = get_user_model() >>> User.objects.get(usern..

Django Parsing Json in Function based view

Django를 사용해서 RESTful API를 만들 일이 많아졌는데, 이 때 function based view에서 어떻게 하면 자동으로 JSON 형식의 데이터를 파싱하고 Swagger(drf-yasg)에 API화 할 수 있는지 포스팅하려고 한다. settings.py REST_FRAMEWORK = { 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', ] } app/views.py from django.http import JsonResponse from rest_framework.parsers import JSONParser from rest_framework.decorators import api_view, parser_classes ..

Django Customizing Default User Model

장고를 사용하다보면 User Model에 새로운 정보를 추가해야 할 상황이 생긴다. 가장 쉽고 간편한 방법은 ProxyModel을 만드는 것이지만, 굳이 그렇게 하고 싶지 않은 상황이 올 수 밖에 없다. 최근 이러한 경우가 생겨서 관련 내용을 포스팅해보려고 한다. User/models.py # coding: utf-8 from django.db import models from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager from django.core.exceptions import ObjectDoesNotExist from django.db.utils import IntegrityError class Use..