분류 전체보기

문제 설명 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 풀이 과정 앞서 풀었던 문제에 비해 간단하게 풀 수 있었던 문제인것 같다. 우선 사용자로부터 입력받은 정수들을 리스트 'data'에 저장하고 리스트에 있는 각 정수 'x'에 대해 2부터 x까지 각 숫자를 i로 나누어 보면서 소수인지 확인하는 과정을 거친다. 이후 소수이면 count 변수를 1로 증가시키고 모든 정수에 대한 처리가 끝난다면 count 변수를 출력함으로써 주어진 수들 중 소수의 개수를 출력할 수 있다. # 사용자로부터 정수 n을..
문제 설명 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 하는 게임이다. 서강그라운드에서 1등을 하면 보상으로 치킨을 주는데, 예은이는 단 한번도 치킨을 먹을 수가 없었다. 자신이 치킨을 못 먹는 이유는 실력 때문이 아니라 아이템 운이 없어서라고 생각한 예은이는 낙하산에서 떨어질 때 각 지역에 아이템 들이 몇 개 있는지 알려주는 프로그램을 개발을 하였지만 어디로 낙하해야 자신의 수색 범위 내에서 가장 많은 아이템을 얻을 수 있는지 알 수 없었다. 각 지역은 일정한 길이 l (1 ≤ l ≤ 15)의 길로 다른 지역과 연결되어 있고 이 길은 양방향 통행이 가능하다. 예은이..
· CTF
해당 문제의 페이지를 접속하면 아래와 같은 코드를 볼 수 있었다. 우선, 이전 문제와 동일하게 preg_match 함수를 사용하여 pw의 입력 값을 필터링 규칙을 통해 prob, -, ., (, )와 같은 정보들을 필터링 하고 있음을 확인할 수 있다. 이 문제를 해결하기 위해서는 admin 계정의 정확한 pw를 입력해야 함을 알 수 있고, pw를 알아내고자 length()을 이용해여 pw의 길이를 알아보자. 먼저 pw=' || length(pw)=10%23 를 입력했을 때에는 아무런 변화가 없었고, 10을 8로 변경하여 pw=' || length(pw)=8%23 작성한 값을 주소창에 넣어주니 다음과 같은 화면을 볼 수 있었다. 따라서 pw의 길이는 8임을 알 수 있다. 이제 pw의 길이를 알아낸 것을 바..
· CTF
문제 페이지에 접속해보면 아래와 같은 코드로 구성되어 있는 것을 볼 수 있었다. 우선, 이 문제는 앞선 문제들과 달리 필터링을 해주는 구문을 확인할 수 있었다. preg_match($pattern, $subject, [, $matches]) : 문자열 안에서 특정한 정규식 패턴의 존재 여부를 찾는데 유용한 함수 $pattern : 문자열로 검색할 패턴 $subject : 입력 문자열 [$matches] : 사용 시 패턴에 매치되는 내용을 배열에 담아둠 따라서 위 코드를 통해 no의 입력 값 필터링 규칙으로 prob, -, ., (, ), ', ", ` 의 값들을 필터링한다는 것을 알 수 있다. 이전 문제들과 다르게 ', "를 필터링 하고 있기 때문에 이전에 사용한 방식으로는 풀 수 없고, 하단의 조건문을..
· CTF
문제 페이지에 접속하면 아래와 같은 코드를 확인할 수 있었다. 코드를 보면 앞서 풀었던 gremlin과 유사한 코드처럼 보이지만 큰 차이점이 있었다. $query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; echo "query : {$query} "; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("cobolt"); 쿼리문을 살펴보면 pw 즉, 비밀번호를 입력하는 부분에 해쉬함수인 md5가 추가된 것을 확인할 수 있었다. 그리고 앞선 gremlin 문제와 다르게 단순히 id가 존재하는지에..
· CTF
우선 문제를 접속하면 아래와 같은 코드를 볼 수 있었다. 우선 아래 코드인 쿼리 부분을 확인해보면 id와 pw를 GET 방식으로 받아오는 것을 알 수 있다. 그리고 다음 if문을 통해 query를 db에 질의하여 결과값이 있다면 문제를 해결할 수 있을 것으로 유추할 수 있다. 우선 GET방식으로 아무 값이나 넣어보자. 다음 사진과 같이 URL 주소 맨 뒤에 '?id=1&pw=1'를 입력해보니 where 부분에 값이 들어가 있는 것을 볼 수 있었다. ? : URL 주소 뒤에 변수 지정 역할 & : 변수와 또 다른 변수의 값을 넣어줄때 변수를 구분해주는 역할 쿼리문만 따로 보자면 입력된 아이디와 패스워드가 일치하는 id를 검색하는 구문이라는 것을 확인할 수 있다. 따라서 php코드에서 if문은 이 쿼리문에서..
veriperi
'분류 전체보기' 카테고리의 글 목록 (23 Page)