문제를 통해서 SQL INJECTION 취약점이라는 정보를 얻을 수 있었다. 문제 페이지에 접속하니 아래와 같은 페이지를 볼 수 있었다. 페이지 위의 카테고리를 통해 다양한 정보를 얻고자 하였으나 로그인 기능만 활성화되어 있는 것을 볼 수 있었다. 우선 로그인 창에 아이디와 비밀번호를 모두 'guest'로 하여 로그인을 시도해보았더니 로그인이 잘 되는 것을 볼 수 있었다. 다음은 아이디와 비밀번호를 모두 admin으로 설정해서 로그인을 시도해보았더니 이번에는 로그인 성공을 하지 못하고 'wrong'이라는 문구와 함께 알림창이 뜬 것을 볼 수 있었다. 문제에서 제공해준 소스코드를 참고하여 해결해보자. #!/usr/bin/python3 from flask import Flask, request, render..
분류 전체보기
문제 설명 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으며, 각 지점 사이의 이동은 지도에서 상하좌우 이웃한 곳끼리만 가능하다. 현재 제일 왼쪽 위 칸이 나타내는 지점에 있는 세준이는 제일 오른쪽 아래 칸이 나타내는 지점으로 가려고 한다. 그런데 가능한 힘을 적게 들이고 싶어 항상 높이가 더 낮은 지점으로만 이동하여 목표 지점까지 가고자 한다. 위와 같은 지도에서는 다음과 같은 세 가지 경로가 가능하다. 지도가 주어질 때 이와 같이 제일 왼쪽 위 지점에서 출발하여 제일 오른쪽 아래 지점까지 항상 내리막길로만 이동하는 경로의 개수를 구하는 프로그램을 작성하시오. 입..
보호되어 있는 글입니다.
문제 설명 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다. 상담을 하는데 필요한 기간은 1일보다 클 수 있기 때문에, 모든 상담을 할 수는 없다. 예를 들어서 ..
문제에서 'Double extensions' 부분을 통해 확장자를 두번 사용하라는 것인지 생각하며 문제에 접근하였다. 문제 페이지에 접속하니 아래와 같은 메인 페이지를 볼 수 있었다. 다른 카테고리는 모두 카테고리 명과 관련된 이모지가 들어있었고, upload 카테고리에는 아래와 같이 사진을 업로드할 수 있는 페이지로 구성되었다. 업로드 버튼을 클릭하니 사진을 업로드 할 수 있는 페이지로 전환되었고, 가장 마지막에 업로드 가능한 확장자들이 언급되어 있었다. 우선 파일 업로드 취약점이니 간단한 원격 쉘 실행 코드를 작성하고 이를 php 확장자로 저장하였다. ⚡ 코드 해설 1. '' 사이에 있는 부분은 PHP 코드로, 웹 서버에서 실행된다. 2. system() 함수 : 명령어를 실행하는 PHP 함수로, 외..
문제 설명을 보니 phpBB에 대해 알고 있냐고 되어 있어서 우선 phpBB가 무엇인지 먼저 알아보았다. 💡phpBB 전자 게시판(bbs) 프로그램으로, GPL로 배포되고 있다. PHP 언어로 작성되었고, 데이터베이스로는 MySQL이나 PostgreSQL을 사용한다. HTML 문법을 대체하는 BBCode라는 문법을 자체적으로 사용한다. 출처 : https://ko.wikipedia.org/wiki/PhpBB phpBB에 대해 찾아본 이후, 문제 페이지에 접속하니 아무것도 없는 빈 화면을 확인할 수 있었다. 여기서 개발자 모드로 소스코드를 확인해보니 주석처리 되어 있는 첫번째 문장을 볼 수 있었다. 현재 문제 페이지와 주소가 비슷하므로 해당 주소를 입력하여 접속해보기로 하였다. 주소창 뒷 부분에 phpbb..