목록Wargame (19)
whois
[그림 1] 39번 문제 39번 문제를 클릭하게 되면 그림 1과 같은 화면이 나온다. 텍스트 박스 하나 주어지는 것을 보니 문구를 입력하고 제출 하면 되는 것 같다. [그림 2] 39번 문제 소스 보기 그림 1 페이지에서 우클릭 하여 소스 보기를 하면 그림 2와 같은 소스 코드를 볼 수 있다. 주석 처리로 된 index.phps가 있으니 접속해 보기로 했다. [그림 3] index.phps 그림 1의 url에서 s만 붙여 index.phps로 접속해 보았다. 접속해 보니 그림 3과 같은 소스 코드를 볼 수 있었다. 해석 하면 아래와 같다.1. _POST[id] 변수에 \\ 값이 있으면 공백으로, ' 값은 ''로 변환하라.2. _POST[id] 변수의 값을 첫 번째 글자(0의 인덱스)부터 15글자까지만 빼..
[그림 1] 38번 문제 38번 문제를 클릭하게 되면 그림 1과 같은 페이지를 볼 수 있다. Log Injection 문제인 듯 하다. Log Injection이란? 파라미터를 통해 로깅을 조절하는 방법을 말한다. [그림 2] 38번 문제 소스코드 그림 1 페이지에서 우클릭 하여 페이지 소스 보기를 하면 그림 2와 같은 소스코드를 볼 수 있다. 핵심은 주석처리로 된 admin.php가 있다는 것이다. [그림 3] admin.php 그림 1의 Admin 버튼을 클릭하게 되면 admin.php로 이동하게 된다. 해당 문제는 crontab이나 데몬을 이용하여 일정 주기로 내용을 삭제하는 것으로 보인다. 문제를 풀 때는 내용이 있었지만 Write-up을 작성하기 위해 캡처할 때는 그림 3과 같이 아무 내용도 보..
[그림 1] 32번 페이지 32번을 클릭하게 되면 그림 1과 같은 페이지를 볼 수 있다. RANK와 HIT이 있는 것을 보고 게임 하는 것으로 유추했다. [그림 2] 32번 소스 우클릭 하여 페이지 소스 보기를 하면 그림 2와 같은 소스 코드를 볼 수 있다. 일정한 형식으로 코드가 반복되고 있다. 내용만 다르지 틀은 같다는 소리다. 클릭을 하게 되면 location.href 속성을 통해 해당 값으로 이동한다. [그림 3] 클릭 그림 2의 소스 코드 분석을 통해 어떤 식으로 동작하는지 알았으니, 그림 1의 아무 이름이나 클릭해 보았다. 결과는 그림 3과 같았다. [그림 4] Join 계속 클릭해도 달라지는건 없어서 다른건 없을까 하고 찾아보다가 32번 페이지 맨 아래에 Join이라는 버튼이 있는 것을 확인..
[그림 1] 27번 페이지 27번을 클릭하게 되면 그림 1과 같은 웹페이지 모습을 볼 수 있다. SQL INJECTION이라는 문구를 보여주는 것으로 보아하니 텍스트 박스에 SQL Injection 공격 구문을 넣어 제출하면 문제를 해결할 수 있을 것으로 보인다. [그림 2] 27번 소스 그림 1 웹페이지에서 우클릭을 통해 소스 보기를 하면 그림 2와 같은 소스를 볼 수 있다. 실수인 척 하면서 index.phps를 주석 처리 해놓음으로 힌트를 제공하고 있다. [그림 3] index.phps 소스 그림 2에서 얻은 index.phps 소스를 보게 되면 총 3가지의 중요 요소들을 캐치 할 수 있다. ① eregi 함수로 필터링 하는 문자들② 제출 양식(공격 벡터)③ 문제 해결 조건 먼저, eregi 함수로..
[그림 1] 25번 25번 문제를 클릭하여 들어가보면 그림 1과 같은 화면을 볼 수 있다. 리눅스를 사용해 봤다면 익숙한 ls -l 쳤을 때 나오는 결과이다. uid는 oldzombie, gid는 users로 제작은 oldzombie님이 했으니 읽고 쓸 수 있는 권한을 설정해 놓았으며, 일반 유저들 그리고 나머지 기타 등등에 대해서는 읽기만 가능하다. URL 끝에 보면 file=hello라고 되어 있다. hello라는 파일을 읽겠다는 것으로 볼 수 있는데 확장자가 없는 것에 대하여 의문점이 들기는 하였다. 또한, 'password.php'라는 파일을 열어 보면 키 값이 있지 않을까라는 추측을 하였다. [그림 2] password 파일 열기(실패) 추측을 행동으로 옮기기 위해 file 변수 값에 passw..
[그림 1] 26번 문제 26번 문제에 접근하게 되면 그림 1과 같이 index.phps에 링크가 걸려 있는 것을 볼 수 있다. [그림 2] 소스 코드 index.phps 소스 코드의 흐름도를 보겠다.① eregi 함수를 통해 id 변수 값에 admin이라는 문자열이 있으면 'no!'라는 문구를 출력 후 종료시킨다.② id 변수에 있는 값을 디코딩한다.③ id 변수 값이 admin이면 문제를 푼다. 따라서, id 변수에 admin 값을 잘 우회하여 만들면 되는 문제이다. [그림 3] 단순 admin 넣기 소스 코드대로 동작하는지 확인하기 위해 단순하게 admin을 id 변수에 넣고 전달해 보니 'no!'라는 문구가 출력되는 것을 볼 수 있다. [그림 4] eregi 함수 우회 저번에 풀었던 문제 중에 e..
[그림 1] 24번 level24를 클릭하게 되면 그림 1과 같이 client ip와 agent 정보를 보여주게 된다. 단순히 whois 정보를 출력하게끔 설정 해둔 것 같다. 그리고 아래에 보니 'Wrong IP!'라는 문구가 보이는 것으로 보아 IP를 맞춰줘야 하는 문제인듯 하다. [그림 2] 문제 소스 문제 소스를 보니 주석처리로 된 source : index.phps가 있다. 힌트이니 24번의 URL에 index.phps를 붙여 들어가 보기로 한다. [그림 3] index.phps 코드 흐름을 살펴 보겠다.① 서버와 쿠키 변수를 추출한다.② REMOTE_ADDR 변수 값이 없으면 서버의 REMOTE_ADDR 값을 REMOTE_ADDR 변수에 넣는다.③ REMOTE_ADDR 값을 ip 변수에 담고 ..
[그림 1] 18번 18번을 클릭하게 되면 그림 1과 같은 웹 페이지가 보인다. 큰 제목으로 'SQL INJECTION'이라는 문구를 박아논 걸 보니 SQL 인젝션 공격을 통해 문제를 풀 수 있다는 것을 알 수 있다. 그리고 index.phps를 클릭하게 유도하여 소스까지 힌트로 주고 있다. [그림 2] 문제 소스 그림 1에서 보이는 index.phps를 클릭하게 되면 그림 2와 같은 문제 소스를 볼 수 있다. 소스 코드의 흐름부터 분석해 보겠다.① no라는 변수를 GET 메서드로 받는다.② eregi 함수를 통해 no 변수 값에 /, \, (,\), \t, |, &, union, select, from, 공백이 있다면 no hack이라는 문자열을 출력하고 종료한다.③ mysql_query를 이용해 쿼리..
[그림 1] 14번 14번를 클릭하게 되면 그림 1과 같은 웹 페이지를 볼 수 있다. 단순히 text 박스와 check 버튼밖에 보이지 않는다. 문제의 의도를 추측하자면 클라이언트 쪽에서 보내는 값과 서버의 값을 비교하여 같으면 문제를 풀 수 있을 것 같다. [그림 2] 소스 여느 때와 다름없이 14번의 웹페이지에서 소스를 보니 URL에서 .kr이라는 문자열을 찾아 ul이라는 변수에 반환 값을 저장하고 30을 곱한 값을 가지는 것으로 보인다. 이 ul 값과 pw.input_pwd.value 값을 비교하여 같으면 패스워드를 보여주는 코드인 것을 알 수 있다. 여기서 pw.input_pwd.value는 클라이언트가 입력한 값임을 추측할 수 있다. [그림 3] indexOf 반환 값 가장 중요한 것은 inde..
[그림 1] 23번 23번 문제를 클릭하게 되면 그림 1과 같은 웹 페이지를 볼 수 있다. 너의 미션은 를 주입시키는 거라고 하는 문장과 함께 텍스트를 넣을 수 있는 박스와 제출 버튼이 보인다. XSS(Cross-site Scripting) 우회를 하라는 문제인 듯 하다. [그림 2] 제출 아래에 있는 문자열을 그대로 넣고 제출하니 그림 2와 같이 no hack이라는 문자열을 반환한다. 추측했다시피 바로 공격이 먹히는 것이 아닌 한 번 우회를 해야 되는 듯 하다. [그림 3]