본문 바로가기

Wargame(CTF)67

Webhacking.kr 7번 Auth 를 누르니 Access_Denied! 라고 뜬다. 소스를 확인해보았다. val이 2가 되어야 조건에 만족하나보다. phps 로 들어가여 소스를 확인해보았다. union 이라는 힌트를 얻었다. if(eregi("--|2|50|\+|substring|from|infor|mation|lv|%20|=|!||sysM|and|or|table|column",$ck)) exit("Access Denied!"); 상당히 많은 부분을 필터링 해놨다. 해당 소스를 통하여 쿼리문을 추측해보면 union select (3-1 정도로 추측할 수 있다. 하지만 공백을 필터링하므로 인코딩값인 %0A를 통하여 넣어줬다. union%0Aselect%0A(3-1 좋은 시도라고 한다. val 값에 아무런 값이 없어서 그런것같다. .. 2014. 4. 13.
Webhacking.kr 5번 나는 웹 문제를 풀 때 무조건 Directory Listing 취약점이 있는지 확인한다. 문제에 접속하니 Login 버튼과 Join 버튼이 존재한다. Join 버튼을 누르니 Access Denied 라고 뜬다. http://webhacking.kr/challenge/web/web-05/mem/ 로 접속한 후 join.php 파일을 다운로드 후 소스를 확인해보았다. 자바스크립트 난독화 사이트를 통해 줄바꿈 및 알아보기 쉽게 바꿔주었다. (http://jsbeautifier.org/ 참고) 그 다음 lllll 이런식으로 되어있는 부분을 읽기쉽게 하나의 알파벳으로 바꿔준 후 소스를 분석해보니 쿠키에 oldzombie 가 들어있어야 하며 URL에 mode=1 이라는 부분이 있어야 된다고 한다. 해당 요건을 충족.. 2014. 4. 13.
Webhacking.kr 4번 Base64로 디코딩 후 MD5rainbow table 을 이용하여 복호화 해주면 답이 나온다. 2014. 4. 13.
Webhacking.kr 3번 해당 문제에 접속하면 네모네모 로직이 뜬다. 문제를 풀어준 후 입력칸과 Go 라는 버튼이 보인다. a 라는 값을 넣고 전송해주니 name : a answer : 1010100000011100101011111 ip : 라고 뜬다. 소스를 확인해봤다. name : POST 방식으로 answer 와 id의 값을 넘겨준다. 웹 프록시를 사용하여 넘기는 값을 확인해봤더니 answer=101010~&id= 와 같은 형식이다. answer와 id의 값이 정해진 값과 일치해야 답을 뿌려줄 듯 하다. 기본적인 우회방법으로 필터링을 우회하면 풀린다. 2014. 4. 12.
Webhacking.kr 2번 소스를 확인해본다. admin 이란 페이지를 찾았다. 쿠키를 확인해보면 time 이라는 값이 있다. 이 부분이 Injection 포인트가 되며 소스값에 주석으로 표시되는 시간값이 참/거짓을 알 수 있는 부분이 된다. time=1397298833 뒤에 and 1=1 과 1=2 를 넣어서 참/거짓일 때의 서버반응을 확인해보았다. 1. 참 일때의 반응 2. 거짓 일때의 반응 참과 거짓일때의 반응을 확인했다. 이제 테이블명과 컬럼명을 알아내야 하는데 이부분에는 게싱이 필요하다. 이 부분에서 상당히 헤매다가 admin 페이지 라면 테이블 명도 admin 이라고 생각을 하였고 패스워드 컬럼명은 당연히 password 라고 생각을 하고 Injecton 을 시작하였다. time=1397298833 and (select.. 2014. 4. 12.
Webhacking.kr 1번 index.phps 를 접속하여 소스를 확인해보았다. 중간쯤 if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1; : user_lv 쿠키가 6이거나 보다크면 1로 설정한다. 그다음 if($_COOKIE[user_lv]>5) @solve(); : user_lv 쿠키가 5보다 크면 답을 뿌리는 형식입니다. 6보다 크게 설정해주면 1로 초기화되므로 5~6 사이에 있는 값으로 user_lv 쿠키를 설정해주면 됩니다. 2014. 4. 12.