write-up(web)/webhacking.kr

    [Webhacking.kr] Challenge old-06 write-up

    [Webhacking.kr] Challenge old-06 write-up

    처음 문제 페이지에 접속하면 ID : guest, PW : 123qwe로 출력 됩니다. view-source를 눌러 소스 코드를 확인합니다. 소스 코드를 분석해보면 base64로 20번 인코딩 한 후 문자를 바꿔주는 replace() 함수 변환을 거쳐서 쿠키 값(user, password)에 저장되고 이 값들의 바꾼 문자들을 다시 원래대로 돌려주고 base64로 20번 디코딩한 값을 화면에 출력해주고 id : admin, pw : nimda 일 때 solve(6) 함수를 호출시켜주는 문제임을 알 수 있습니다. base64 인코딩 및 replace() 함수를 적용한 쿠키 값을 직접 대입해서 요청하면 풀릴 것으로 예상됩니다. import base64 from dataclasses import replace ..

    [Webhacking.kr] Challenge old-11 write-up

    [Webhacking.kr] Challenge old-11 write-up

    문제 첫 화면입니다. view_source를 클릭해 소스 코드를 확인해보니 정규표현식을 다루는 문제입니다. $pat에 정규표현식이 저장되어 있으며 preg_match 함수를 통해 get방식으로 받은 변수 val과 비교해 참이면 solve()함수를 호출합니다. 정규표현식을 분석해보겠습니다. [1-3] -> 1~3 숫자 1개 [a-f]{5} -> a~f 문자 5개 . -> \n을 제외한 문자 1개(와일드카드 개념인듯 합니다) * -> 앞에 있는 문자가 0개 이상(여기서 앞에 있는 문자는 .임) $_SERVER[REMOTE_ADDR] -> 클라이언트(본인) ip \t -> 탭 공백(url에선 %09로 인코딩) 분석한 내용을 토대로 정규식을 짜보면 아래와 같습니다. 1aaaaa_255.255.255.255%09..

    [Webhacking.kr] Challenge old-10 write-up

    [Webhacking.kr] Challenge old-10 write-up

    문제 화면입니다. 개발자 도구로 소스 코드를 확인해보겠습니다. id가 hackme인 녀석을 발견했습니다. 이 친구를 공략하는 문제겠구나 라는 느낌을 가지고 분석해봅니다. 마우스 클릭 이벤트가 발생할 경우 left값이 1씩 증가하며 1600일 경우 하이퍼링크가 생성되는 함수를 가지고 있는 모습입니다. left 값을 1599로 해주고 클릭해줍니다. 자동으로 창이 넘어가면서 alert창이 뜨면서 문제가 마무리됩니다. (alert 창의 내용이 처음 풀었을 때와 다름)

    [Webhacking.kr] Challenge old-01 write-up

    [Webhacking.kr] Challenge old-01 write-up

    문제를 클릭하면 나오는 첫 화면 입니다. view-source에 들어가 소스 코드를 보겠습니다. solve() 함수에 도달하면 해결이 되는 듯 보입니다. solve() 함수에 도달하기 위해선 중첩 if 문을 통과해야 하는 모습을 볼 수 있습니다. user_lv 이라는 쿠키의 값을 검사하는 조건식임을 알 수 있습니다. 첫 번째 if 문에서 user_lv 값이 숫자가 아니라면 user_lv 값을 1로 설정해주고 두 번째 if 문은 user_lv 값이 4 이상이면 user_lv 값을 1로 설정해줍니다. 마지막으로 세 번째 조건은 user_lv 값이 3 초과이면 solve()함수를 호출합니다. 조건을 종합해보자면 user_lv값은 아래와 같아야함을 알 수 있습니다. 3 < user_lv < 4 따라서 조건에 맞..