Webhacking.kr 16번
·
Webhacking.kr
16번 문제 소스를 보면 "cd" 변수 값을 기준으로 5 가지 기능이 실행된다. cd 값을 잘 보면 특정 정수 범위인것을 알 수 있는데 바로 문자의 ASCII 값이다. ( 각각 'd', 'a', 'w', 's' 문자를 의미 ) 즉, 키보드에서 'w'를 누르면 위로 50 만큼 이동한다. 따라서 클리어 조건은 정수 124가 의미하는 문자 입력하는 것이다. 콘솔에서 String.fromCharCode를 이용해서 124가 의미하는 문자 '|'를 알아낸다. '|' 문자를 클릭하면 위 사진의 URL로 페이지가 이동된다.
Webhacking.kr 15번
·
Webhacking.kr
15번 문제를 클릭하면 "Access_Denied" 창이 나타난다. "webhacking.kr" 문제 목록에서 소스를 보면 15번 문제는 "challenge/javascript/js2.html" 로 이동된다. 크롬 URL창에 "view-source:URL" 를 입력하면 해당 URL의 소스가 보여진다. 15번 소스를 보면 경고창이 나타나고, "history.go(-1)"가 실행되면서 이전 페이지로 돌아가게 된다.
Webhacking.kr 14번
·
Webhacking.kr
indexOf(x) 함수는 인자 값으로 들어온 x의 위치를 반환한다. 위 사진에서는 URL 내에서 ".kr" 위치를 반환하는데 주의할 점은 document.URL 값이다. 일반적으로 URL에는 http://webhacking.kr/challenge/javascript/js1.html" 로 나타난다. 그러나 실제 값은 앞쪽에 프로토콜이 명시된 "http://webhacking.kr/challenge/javascript/js1.html" 이다. 따라서 ".kr"의 위치 값은 17 이 된다. (제일 왼쪽 'h'의 값은 0) ul = 17 * 30 ul = 510
Webhacking.kr 13번
·
Webhacking.kr
빈 칸에 입력하면 "no" 파라미터로 전송 됨 삽질을 좀 해보면 "like", 공백, limit 등이 필터링 됨 like 필터링 우회는 "in", 공백 우회는 "%0a" 사용하면 됨 그리고 조건을 참으로 만들면 result 컬럼의 리턴 값이 '1' 조건을 거짓으로 만들면 result 컬럼의 리턴 값이 '0' 리턴 값을 기준으로 인젝션 쿼리의 참/거짓을 판별할 수 있음 서브 쿼리 사용 여부를 테스트 하기 위해 위 사진과 같이 입력하면 참을 의미하는 '1' 리턴 됨 힌트를 보면 flag 컬럼을 "prob13password"에서 가져오는데 해당 컬럼의 데이터가 몇개 인지 모름 따라서 개수를 알아보기 위해 "count" 함수를 이용하여 위 사진과 같이 개수가 '1'인지 확인 => 거짓을 의미하는 '0'이 리턴되..
Webhacking.kr 12번
·
Webhacking.kr
WorkTimeFun 변수가 뭔가 복잡하게(난독화) 되어있다. * String.fromCharCode(x) 함수는 인자 값으로 들어온 x 정수값을 ASCII 문자로 변경한다. * eval(x) 함수는 인자 값으로 들어온 x를 실행시킨다. WorkTimeFun 전체를 크롬 콘솔에 복붙하면 자동으로 난독화가 풀린다. alert(Password is ~~~) 문자열 윗 부분이 바로 Password 값을 난독화 하는 부분이다. 크롬 콘솔에 복붙하면 복호화 된다.
Webhacking.kr 11번
·
Webhacking.kr
$pat 변수에 정규식이 대입되어 있다. preg_match 통해 GET 메소드로 입력 받은 val 파라미터 값과 $path을 비교하여 일치해야 문제가 클리어 된다. 정규식의 의미는 아래 표와 같다. 정규식 의미 [1-3] 1 ~ 3 사이의 정수값 [a-f] a ~ f 사이의 알파벳 {5} 이전 정규식을 5번 반복 * 모든 문자 \t Tab (탭) * Tab => URL Encoding => %09
Webhacking.kr 10번
·
Webhacking.kr
10번 문제 초기 화면, 'O' 문자를 클릭하면 "yOu" 로 변경되면서 한칸 우측으로 이동한다. (사진 클릭화면 확대 됨) 소스를 보면 "hackme" id 값을 가지는 'o' 문자 클릭시(onclick) 한칸 이동한다(this.style.posLeft += 1) 해당 속성은 크롬 콘솔을 통해 초기화 할 수 있다. 10 으로 "posLeft" 속성 값을 초기화하고, 문제 페이지에서 'O'를 한번 클릭하면 11로 값이 증가한다. 값이 800일 때 클리어가 되니, 799로 세팅하고 문제 페이지에서 'O'를 한번 클릭하면 된다.
Webhacking.kr 9번
·
Webhacking.kr
9번 문제를 클릭하면 위와 같이 HTTP Authentication 창이 나타남 임의의 값 ("test/test")를 입력 후 로그인 버튼을 누르면 위와 같이 패킷이 전송 됨 * 여기까지 해보고 도저히 감이 안 잡혀서 구글링을 해봄 * 문제에서 요구하는건 "htaccess"를 사용하여 접근 방식을 설정했을 때 발생하는 취약점을 이용하라는 뜻 * htaccess 파일에 " " 형식으로 제한을 걸면 다른 메소드를 검증하지 않음 * 따라서 "OPTIONS" 등을 이용하여 인증 우회 가능 전송되는 패킷을 일일이 프록시에서 "GET = > OPTIONS" 처럼 수동으로 변경해도 되지만 버프스위트에서는 "Match and Replace" 기능을 이용하여 자동화 가능 위와 같이 설정하면 자동으로 OPTIONS 메소드..
Webhacking.kr 8번
·
Webhacking.kr
$agent 변수에 "getenv" 함수를 이용하여 "HTTP_UESR_AGENT" 값을 저장한다. $ip 변수에 클라이언트의 공인 IP 값을 저장한다. $agent 변수에서 공백을 제거(trim) 한다. $agent 변수에서 '.', '/' 문자가 발견되면 '_' 문자로 치환한다. $pat 변수에 필터링 할 여러 문자열들을 저장한다. $agent 변수 값과 $pat 변수값을 비교하여 일치하면(필터링에 걸리면)가 오류가 발생한다. HTTP_USER_AGENT 값에 대하여 특정 문자를 치환한다. $count_ck 변수에 "SELECT" 쿼리 결과가 저장된다. 쿼리 결과(id 컬럼 개수)값이 70개 이상이면 "lv0" 테이블의 모든 데이터를 삭제한다. $q 변수에 쿼리를 저장하는데, 쿼리에서 $HTTP_US..
Webhacking.kr 7번
·
Webhacking.kr
7번 문제 페이지 소스 화면, 주석으로 "admin mode : val=2" 라고 적혀있다. 물론 그냥 URL 부분에 "val=2" 입력하면 안된다. index.phps 페이지에서 소스 분석을 진행한다. URL 에서 "get" 파라미터로 받은 값을 $go 변수에 저장한다. (입력 받지 않으면 자동으로 1 세팅) $go 변수 값을 다시 $ck 변수에 저장한다. $ck 변수 값에서 '*', '/' 문자가 발견되면 '' 으로 치환한다. $ck 변수 값에서 "--", "2", "50", "\+", "substring", "from" 등의 문자열이 발견되면 오류가 발생한다. $ck 변수 값에서 공백(%20)이 발견되면 오류가 발생한다. 1 ~ 5 사이 임의의 값을 $rand 변수에 저장한다. $rand 변수 값에..