Wargame/Webhacking.kr
-
<Webhacking.kr> old-10Wargame/Webhacking.kr 2021. 11. 23. 16:31
old-10 O에 마우스를 가져가면 yOu로 바뀌고, 클릭하면 오른쪽으로 조금 움직인다. O를 Goal라인으로 가져가라는 것 같다. 직접 눌러서 해보니 굉장히 오래 걸린다. 페이지 소스 코드를 살펴보면 id="hackme"라는 a 태그가 있다. O의 처음 좌표가 나오고, 눌렀을 때 parseInt로 현 x좌표에 1을 더하여 움직인다. 이 O의 x좌표가 1600이 되었을 경우, ./?go=1600px로 이동하게 된다. 그래서 ./?go=1600px를 입력하면 "no hack" 메시지를 출력한다. 바로 접속하지는 못하는 것 같다. 그럼 처음 위치를 옮길 수 있다. O의 x좌표가 1600까지 가면 되기에 1599로 주면 이제 O를 한번 더 클릭하면 문제를 해결할 수 있다.
-
<Webhacking.kr> old-09Wargame/Webhacking.kr 2021. 11. 18. 15:08
old-09 3개의 링크와 패스워드를 입력할 수 있다. 각 링크를 살펴보면 no=1 이면 Apple을, no=2 이면 Banana를, no=3이면 'Secret'이라는 메시지와 컬럼은 id와 no 그리고 no=3의 아이디가 패스워드라 한다. id no Apple 1 Banana 2 {Secret} 3 대략 이런 형태를 띄는 것 같다. 일반적인 SQL Injection 문제라 생각하고 어떤 문자를 필터링하는 지 확인해본다. ?no=' 를 입력하면 'Access Denied' 메시지를 출력한다. 이외에도 더블 쿼터("), =, 공백, , ||, or, and, ascii, ord, left 등을 필터링한다. if 문을 사용하여 길이를 확인할 수 있다. Apple의 길이는 5이므로 ?no=if(length(i..
-
<Webhacking.kr> old-08Wargame/Webhacking.kr 2021. 11. 16. 16:40
old-08 "hi guest"라는 메시지와 view-source만을 볼 수 있는데, view-source를 통해 페이지 소스코드를 살펴볼 수 있다. HTTP_USER_AGENT : 웹 사이트를 접속한 컴퓨터의 웹 브라우저 정보 $_SERVER['REMOTE_ADDR'] : 사이트 접속한 사용자 IP $ck는 "select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'"); 쿼리의 결과를 배열로 가져온다. $ck[0]이 'admin'이면 문제를 해결할 수 있다. 아래 부분의 쿼리를 통해 테이블의 구조를 알 수 있다. chall8(agent, ip, id) 형태를 확인할 수 있는데, 우선 지금 형태는 agent ip id ..
-
<Webhacking.kr> old-07Wargame/Webhacking.kr 2021. 11. 15. 17:38
old-07 'auth' 버튼을 누르면 "접근이 거부되었다"는 메시지를 출력한다. view-source를 통해 페이지 소스 코드를 살펴보면 GET 방식으로 전달받은 'val'의 값을 변수 '$go'라 한다. $go의 값에서 2, -, +, from, _, =, \s, *, / 를 필터링한다. 그리고 1부터 5까지를 랜덤으로 정해 각기 다른 쿼리를 실행한다. 각기 20%의 확률이므로 $rand가 1일 경우에 맞춰 문제를 풀었다. 그리고 $data[0]가 2가 되어야 문제를 해결할 수 있다. 2를 만들기 위해서는 '1+1', '3-1' 등과 같은 방법은 연산자가 필터링되기 때문에 사용할 수 없다. 2를 만들기 위해서는 chr(50), mod(5,3) 등을 이용할 수 있다. ?val=char(50)을 입력하면..
-
<Webhacking.kr> old-05Wargame/Webhacking.kr 2021. 11. 14. 01:42
old-05 로그인 버튼과 회원가입 버튼이 나타난다. 로그인 버튼을 누르면 로그인 화면이 나타난다. 회원가입 버튼을 누르면 접근할 수 없다고 한다. 먼저 로그인 화면에서 ' or 1=1-- 을 입력해보면 아무 일도 일어나지 않는다. Webhacking.kr의 아이디로 로그인해봐도 아무 일이 일어나지 않는다. 아마 'admin'으로 로그인하라는 것 같지만, 아무런 정보가 없다. 로그인 화면의 URL을 살펴보면 "/mem/login.php"이다. 여기서 "login.php"를 지우면 위와 같은 페이지가 나타나게 된다. 이를 디렉터리 인덱싱이라 한다. 디렉터리 인덱싱(Directory indexing) 취약점은 웹 서버의 잘못된 설정으로 웹 서버 디렉터리의 파일들이 노출되는 취약점으로, 디렉터리 리스팅 취약점..
-
<Webhacking.kr> old-06Wargame/Webhacking.kr 2021. 11. 11. 18:17
old-06 이미 풀어서 ID와 PW가 변경되었다. 원래는 ID : guest, PW : 123qwe 이다. 우선 view-source를 먼저 살펴본다. 먼저 나오는 PHP 문을 살펴보면 $val_id와 $val_pw를 먼저 base64로 인코딩을 20번 돌린다. 그리고 $val_id와 $val_pwd의 값에서 각각 숫자들을 코드에 나타난 특수문자로 교체한다. 이것을 쿠키 값으로 설정한다. 크롬의 확장 프로그램인 'EditThisCookie'를 통해 쿠키 값을 살펴보면 쿠키 값이 3개 존재한다. 위 페이지 소스코드에 따라 user에는 guest를 변환한 값이고, password에는 123qwe를 변환한 값이다. 이제 두 번째 PHP 문을 살펴보면 ID와 PW의 값이 각각 'admin'과 'nimba'이면..
-
<Webhacking.kr> old-03Wargame/Webhacking.kr 2021. 11. 9. 16:52
old-03 하나의 로직 퍼즐 문제가 나온다. 숫자는 색칠이 돼있는 사각형의 개수를 뜻한다. 이 로직 퍼즐을 풀면 위와 같은 모양이 된다. 'solved' 버튼을 누르면 로그에 이름을 기입하라고 한다. 아무 이름을 기입해 보겠다. name, answer, ip가 출력된다. 다른 값(admin, 특수문자 등)을 입력해도 name만 다를 뿐, answer와 ip는 항상 같은 값을 출력한다. SQL Injection 구문을 넣어봤다. 여전히 answer와 ip값은 동일했다. 이렇게 푸는 게 아닌듯하다. 페이지 소스를 살펴보면 POST 방식으로 answer와 id가 전달된다. POST 방식은 BODY에 데이터를 넣어서 보낸다. Burp Suite로 살펴보면 POST 방식으로 "answer=101010000001..
-
<Webhacking.kr> old-02Wargame/Webhacking.kr 2021. 11. 8. 17:29
old-02 제한 구역이라 한다. 그리고 내 IP가 로깅 중이라 한다.(로깅이란 로그를 기록하는 행위) 아무런 내용이 없기에 페이지 소스 코드를 먼저 살펴본다. 날짜와 시간은 로그인한 시점을 뜻하는 것 같다. 그리고 뒤의 경고문을 살펴보면 admin.php에 접근하면 될 것 같다. 비밀번호를 입력하는 창이 나온다. 주소 창에 javascript:alert(document.cookie)를 통해 쿠키 값을 살펴본다. 쿠키 값에 time이 있는 것을 확인할 수 있다. time의 값을 변경해 본다.(크롬의 확장 프로그램인 'EditThisCookie'를 사용하면 편하다) 주석에 적힌 날짜와 시간이 변했다. 이번엔 time의 값을 2로 바꿔 봤다. 주석에 적힌 초가 2로 바뀌었다. 즉 참인 뜻을 가지는 자연수를 ..