목록분류 전체보기 (186)
Iriton's log
첫 화면은 이번에도 input box만 보인다. 페이지 소스 코드를 살펴 보아야 한다. unlock이라는 변수에 무수히 긴 연산이 있다. 그리고 login.pw의 값이 unlock의 값고 같다면 해결이 된다고 한다. 따라서 연산 값을 찾기만 하면 문제는 풀린다. 우선 unlock 변수에 저장되는 저 연산식을 모두 복사한다. f12를 누르고 Console 창에 복사해둔 연산식을 붙여넣으면 알아서 계산을 해 줘서 박스에 입력했다.
보호되어 있는 글입니다.
input box와 button만 보인다. 올바른 값을 입력하고 check를 클릭하면 해결될 문제같다. flag값을 구하기 위해 페이지 소스 코드를 확인해야 한다. form tag를 분석해 보면 input 값은 input_pwd에 저장된다. 조건문을 살펴 보면 ul의 값과 input 값과 일치하면 해결된다. 그 외 경우에는 Wrong 팝업을 띄운다. 해당 코드를 보면 ul은 URL에서 .kr의 인덱스 값에 30을 곱한 수를 저장하는 변수이다. 인덱스의 시작은 0이기에 .kr의 인덱스 값은 18부터 시작이므로 여기에 30을 곱한 값은 540이 된다.
보호되어 있는 글입니다.
첨부된 jpg 파일을 열어 보자. 사진에는 플래그가 없으니 에디터를 사용해야 한다고 힌트를 준다. 이미지를 저장하여 HxD.exe로 파일을 열었다. 외계어처럼 보이는 화면이 뜬다. 하지만, 문제에서 형식을 제공해 줬으니 텍스트 문자열 찾기를 이용하여 검색하면 아래와 같은 화면이 보인다. 포렌식 문제 푸는 법만 알면 너무 쉬운 문제다....
문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 풀이 한수의 기준에 따르면, 100 미만의 값들은 모두 한수에 해당된다. (십의 자리까진 모든 조합을 규칙성으로 볼 수 있기 때문이다.) 문제는 100이 넘어갈 때부터이다. 한수가 되기 위해서, 백의 자리 수와 십의 자리 수의 차가 십의 자리 수와 일의 자리 수 차와 같아야 한다. 규칙성이 있는지 확인하는 절..
문제 (A+B)%C는 ((A%C) + (B%C))%C 와 같을까? (A×B)%C는 ((A%C) × (B%C))%C 와 같을까? 세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000) 출력 첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다. 풀이 A, B, C를 한 줄에 입력받으니 공백을 기준으로 나눠서 변수에 저장해야 한다. 이때, map(), input(), split() 을 사용할 것이다. map(function, iterable) : *iterable 객체(list, dict,..
소스코드를 볼 수 있는 하이퍼 링크가 첨부되어 있다. 당연히 들어가 준다. solve(26)에 해당하는 조건문을 보니 id가 admin이 되어야 한다. 바로 위의 두 줄을 보면 id에 들어가는 값은 urldecode함수를 거친다. 그리고 admin이면 안 된다. (직접적으로 ?id=admin을 쓰면 안 된다는 뜻이다.) 디코딩한 값이 admin이어야 하는 것 같다. 즉, admin을 인코딩한 값을 알면 된다. 하지만 순순히 문제가 풀리지 않았다. 찾아 보니, 브라우저와 php는 서로 데이터를 교환할 때 자동으로 인코딩과 디코딩을 한다고 한다. 이 점을 고려해서 admin을 두 번 인코딩해야 한다. 인코딩은 사이트를 통해 간단하게 할 수 있으므로 패스.