문제 설명 전대프연 대회에서 문제를 푼 팀은 풍선을 받게 된다. 풍선은 사람이 직접 달아주기 때문에 자원 봉사자가 필요하다. 풍선은 방 A와 방 B에 보관되어 있다. 대회에 참가한 팀의 수는 총 N개이고, 앉아있는 자리는 서로 다르다. 어떤 팀은 방 A에 가깝고, 어떤 팀은 B에 더 가깝다. 각 팀에게 달아줘야 하는 풍선의 수와 방 A와 B로부터의 거리가 주어진다. 이때, 모든 풍선을 달아주는데 필요한 이동 거리의 최솟값을 출력한다. 대회에서 풍선을 달아주는 사람은 매우 많고, 풍선은 한 가지 색상을 여러 개 달아준다고 가정한다. 풍선을 달기 위해 이동해야하는 거리는 팀이 A와 B로부터 떨어진 거리와 같다. 풍선을 달아주는 사람은 한 번에 풍선 하나만 들고 이동할 수 있다. 입력 입력은 여러 개의 테스트..
분류 전체보기
해당 문제의 정보는 다음과 같다. 주어진 접속 정보 페이지에 들어가니 아래와 같은 화면을 볼 수 있었다. 음 진짜 이것만 보고 어떻게 하라는지 모르겠다.. 문제 풀이를 위해서 해당 문제를 풀기 위해서 중요한 개념을 우선 살펴보자. Error Based SQL Injection Error Based SQL Injection은 의도적으로 에러를 발생시켜서 데이터베이스 및 운영 체제의 정보를 획득하는 공격 기법이다. 따라서 쿼리 실행 결과가 에러가 발생했을 경우 에러가 화면에 출력된다면 발생할 수 있는 취약점이다. 만약 애플리케이션에서 발생하는 에러를 이용해 공격하려 한다면 문법 에러와 같이 DBMS에서 쿼리가 실행되기 전에 발생하는 에러가 아닌 런타임 (Runtime) 시점에 발생해야 한다. 즉, 쿼리가 실..
보호되어 있는 글입니다.
문제 설명 수정이는 어린 동생을 달래기 위해서 사탕을 사용한다. 수정이는 평소에 여러 개의 사탕을 사서 사탕상자에 넣어두고, 동생이 말을 잘 들을 때면 그 안에서 사탕을 꺼내서 주곤 한다. 각각의 사탕은 그 맛의 좋고 나쁨이 1부터 1,000,000까지의 정수로 구분된다. 1이 가장 맛있는 사탕을 의미하며, 1,000,000은 가장 맛없는 사탕을 의미한다. 수정이는 동생이 말을 잘 들은 정도에 따라서, 사탕상자 안에 있는 사탕들 중 몇 번째로 맛있는 사탕을 꺼내주곤 한다. 예를 들어 말을 매우 잘 들었을 때에는 사탕상자에서 가장 맛있는 사탕을 꺼내주고, 말을 조금 잘 들었을 때에는 사탕상자에서 여섯 번째로 맛있는 사탕을 꺼내주는 식이다. 수정이가 보관하고 있는 사탕은 매우 많기 때문에 매번 사탕상자를 뒤..
문제 설명 N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다. N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라. 수의 위치가 다르면 값이 같아도 다른 수이다. 입력 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) 출력 좋은 수의 개수를 첫 번째 줄에 출력한다. 풀이 과정 우선 해당 문제를 설명하면 다음과 같이 요약할 수 있다. n개의 숫자가 주어지고, n개의 숫자 내에서 i번째 숫자가 서로 다른 두 숫자를 합쳐 나타낼 수 있다면 해당 i번째 숫자는 좋은 수 이다. 좋은 수의 갯수를 출력해보자. 이때, i번..
해당 문제의 내용은 다음과 같다 접속 정보 보기를 통해 문제 페이지에 접속하면 아래와 같은 화면을 볼 수 있었다. 우선 지금 할 수 있는 것이 없으니 get source 버튼을 눌러서 소스를 확인해보자 소스 코드에서 php 파일을 확인해보면 로그인에 성공하면 FLAG 값을 주는 것을 볼 수 있었다. php 코드 아래에 주석으로 사용자 정보를 알려주고 있다. 로그인을 위 정보로 하면 flag 값을 주지만, id가 guest, blueh4g이면 계정이 막혔다는 문구가 표시된다. 이 부분에서 해당 페이지의 취약점을 찾을 수 있었다. 그 취약점은 if 문에서 발견할 수 있었다. 만약 id를 guest가 아닌 GUEST처럼 대문자로 넣으면, if문을 통과하여 db에 guest로 들어가게 된다. 따라서 아이디를 G..