문제 설명834문제에서 요구하는 형식의 문자열을 입력하여 플래그를 획득하세요. 플래그는 `flag.txt` 파일과 `FLAG` 변수에 있습니다.플래그 형식은 DH{...} 입니다. 풀이해당 웹 서버 구동 코드는 다음과 같다.#!/usr/bin/python3from flask import Flask, request, render_templateimport reapp = Flask(__name__)try: FLAG = open("./flag.txt", "r").read() # flag is here!except: FLAG = "[**FLAG**]"@app.route("/", methods = ["GET", "POST"])def index(): input_val = "" if ..
문제 설명872"Welcome! 👋"을 출력하는 html 페이지입니다.소스코드를 확인하여 문제를 풀고 플래그를 획득하세요.플래스 형식은 DH{...}입니다. 풀이주어진 Host로 접속해 개발자 모드로 화면을 확인하면 다음 hidden input을 확인할 수 있다. Welcome! 👋 이 값을 Base64로 디코딩하면 플래그를 출력하는 Python 코드를 확인할 수 있다.asc=[68, 72, 123, 98, 101, 48, 52, 54, 98, 55, 53, 50, 50, 97, 97, 50, 101, 50, 56, 102, 50, 55, 54, 101, 48, 99, 57, 49, 48, 53, 50, 49, 102, 50, 51, 97, 48, 53, 56, 55, 48, 48, ..
문제 설명873php로 작성된 페이지입니다.알맞은 Nickname과 Password를 입력하면 Step 2로 넘어갈 수 있습니다.Step 2에서 `system()` 함수를 이용하여 플래그를 획득하세요.플래그는 `../dream/flag.txt`에 위치합니다.플래그의 형식은 DH{...}입니다. 풀이Step 1 페이지의 form에 nickname과 password를 입력하고 일정 조건을 만족하면 Step 2로 넘어갈 수 있다. 따라서 nickname과 password를 알아낼 수 있는 정보는 `step.php` 파일에 있다.Step 2 : Almost done...'; $cmd = $_POST["cmd"] ? $_POST["cmd"] : ""; ..
문제 설명837리눅스 명령어를 실행하는 웹 서비스가 작동하고 있습니다.해당 웹 서비스의 코드가 첨부파일로 주어집니다.flag.txt 파일을 찾아 출력하여 플래그를 획득하세요!플래그 형식은 DH{...} 입니다. 풀이문제 서버로 curl 요청을 전달하면 html 파일을 볼 수 있다. Baby Linux echo $() Submit Result 보면 `user_input` 이라는 이름의 form을 POST로 서버에 전송하고, 이를 통해 플래그를 받을 수 있음을 알 수 있다. 서버의 코드를 확인해보면 다음과 같다.#!/usr/bin/env python3import subprocessfrom ..
문제 설명문제 링크길이가 N인 수열 S가 어떤 수 S[k]를 기준으로 다음을 만족할 때, 이를 바이토닉 수열이라고 한다.S[1] S[k+1] > ... S[N-1] > S[N] 수열 A가 주어졌을 때, 그 수열의 부분 수열 중 바이토닉 수열이면서 가장 긴 수열의 길이를 구하라.첫째 줄에 수열 A의 크기가 주어지고, 둘째 줄에는 수열 A를 이루고 있는 A[i]가 주어진다. 제한 사항1. 접근문제에서 말한 바이토닉 수열은 수열 S의 특정한 수 S[k]가 부분 수열 내의 피크값인 경우를 말한다.S[k]를 기준으로 좌측은 S[k]까지 단조 증가, 우측은 S[k]부터 단조 감소하기 때문에 이 문제는 S[k]까지 가장 긴 증가하는 부분 수열과 S[k]부터 가장 긴 감소하는 부분 수열을 구하는 것에서 출발해야..
문제 설명문제 링크 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해 주세요. 제한 사항1. 1 접근이 문제가 재미있었던 이유는 서로 다른 n개 중 m개를 고르는 경우의 수 공식을 문제에서 공개했다. 재귀함수를 이용해 Factorial을 구현하면 풀..
Java 진영의 프레임워크나 라이브러리는 많은 것이 추상화 되어 있다.추상화가 잘 되어 있으면 코드를 블록 조립하듯 작성할 수 있다. 이 구현체는 이런 역할을 담당하고, 이 메서드는 이런 input을 넣으면 이런 output을 뱉는다... 정도만 알고 있어도 특정한 동작을 하도록 만드는 것은 어렵지 않다.하지만 그걸 배우는 입장에서는 잘 된 추상화는 이해를 방해한다. 전체적으로 어떻게 구현이 되어있는지 파악하기 어렵다. 개인 프로젝트로 작은 웹 서비스 서버를 구현해보면서 JWT 기반 인가 처리와 OAuth 인증을 구현하고 싶었는데, 내가 접근했던 모든 정보는 이걸 구현해서 Bean으로 등록하면 됩니다, 정도에서 그쳤다.OAuth 2.0 기반 인증 처리를 구현할 때, 최초에 이해한 것은 다음이 전부였다.구..
Spring Data JPA Repository의 기본 구현체를 분석해보며 기계적으로 서비스 계층의 메서드에 `@Transactional` 어노테이션을 붙이는 것이 적절한가? 그리고 JPA가 제공하는 메서드들은 내부적으로 어떻게 동작할까? 일반적으로 Spring Data JPA를 사용해 Repository를 Interface로 만들고 메서드 쿼리를 사용한다면 `save()`, `findById()`와 같이 메서드 이름으로 원하는 쿼리를 만들어낼 수 있다. Interface만으로 동작할 수 없으므로 `save()`, `findById()`와 같은 기본 메서드를 구현하는 구현체가 있을 것이다. 이 구현체의 동작 방식을 코드 레벨에서 확인해보면 내가 정확히 알지 못하고 사용하던 메서드를 조금 더 깊게 이해할 ..
Spring이 지원하는 DB Transaction의 내부 동작 원리와 Transaction Propagation이 동작하는 방식을 파악하기 위해 디버깅을 해봤다. @Transactional 어노테이션을 클래스 레벨이나 메서드 레벨이 붙이면 Spring이 DB Transaction 관리를 알아서 해준다.이렇게 작성하면 프레임워크가 혹은 라이브러리가 알아서 해준다, 정도로 이해해야 하는 상황이 가장 답답하게 느껴진다. 어떻게 알아서 해준다는 것인지 따로 찾아보지 않으면 영원히 모르게 될 가능성이 높기 때문이다. 그래서 알아서 해주는 것을 확인하고 적용해본 다음에는 꼭 어떻게 알아서 해주는 것인지를 찾아봐야 마음이 놓인다.보통은 서비스 계층의 메서드에 @Transactional 어노테이션을 붙이면 해당 메서드..
개인 프로젝트를 하다가 Java Optional 클래스가 해결하는 문제와 각 메서드의 역할 및 동작 원리가 궁금해졌다. 나는 아래와 같은 코드를 작성했다.// Email, Provider로 기존 유저 조회, 없으면 새 유저 생성User user = userRepository.findOAuthUser(email, providerType) .orElse(createOAuthUser(oAuth2User, providerType)); 기대하는 동작은 아래 쿼리를 전송해서 registrationId와 email 조건을 만족하는 기존 유저를 조회하고, 없는 경우 새로운 유저를 생성하는 것이었다.SELECT * FROM userWHERE email = 'user@gmail.com' AND provider = 'GO..
- Total
- Today
- Yesterday
- oauth2
- Misc
- WarGame
- Framework
- WEB
- Spring Security
- test
- XSS
- Dreamhack
- askers
- SEO
- React
- math
- 회고
- DP
- Spring
- sql injection
- Transaction
- opengraph
- webgoat
- CSRF
- linux
- Bandit
- sqli
- PS
- JPA
- java
- Database
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |