wargame/webhacking.kr 12

Webhacking.kr(old) 52번

리뉴얼 전의 웹해킹 문제를 풀어본 사람이라면 리뉴얼 전 문제에서 어느정도 힌트를 찾을 수 있다. 이전 문제는 입력 벡터 하나에 파라미터로 헤더에 특정 값만 삽입하면 클리어되었기 때문에 해당 문제의 기술이 언제 쓰이는가에 대한 시나리오 적인 요소를 추가해서 리뉴얼한게 의도가 아닌가 싶다. admin 페이지와 proxy 페이지 가 존재하고 admin 페이지에서 인증 로그인을 실패했을 때 admin페이지의 소스코드 URL을 볼 수 있다. 소스코드는 아래와 같다. view-source 세션이 존재할 때와 존재하지 않을 때, 두 부분으로 나눠서 분석한다. 먼저 세션이 존재하지 않을 때에 소스 if($_SERVER['PHP_AUTH_USER']){ $id = $_SERVER['PHP_AUTH_USER']; $pw ..

Webhacking.kr(old) 4번

웹케알이 리뉴얼 되었다. 너무 옛날 버전의 취약점은 약간씩 고쳐지고 문제의도를 잘 모르겠는 문제들도 개편되었다. 4번도 이에 해당된다. 기존문제는 base64로 인코딩된 값을 풀어 나오는 sha1의 값을 rainbow 테이블로 찾아내면 되는 문제였다. sha1의 레인보우 테이블은 웹에서 지원하는 경우가 많기 때문에 쉽게 찾을 수 있었지만, 리뉴얼 되면서 의도된 바는 레인보우 테이블이 어떻게 만들어지는 지에 대한 원리를 직접 느껴보길 바라는 의도인 것으로 보인다. 바뀐 문제를 풀어보자. Password [view-source] $hash = rand(10000000,99999999)."salt_for_you"; 10000000에서 99999999 사이의 숫자를 하나 뽑아 salt_for_you와 합친다. ..

wargame/webhacking.kr 2019.11.13 (2)

webhacking.kr 42번 풀이

webhacking.kr 42번 풀이 [HINT] 1. Base642. File Download3. Brute Force Attack 페이지에 접근하면 두개의 다운로드 링크를 볼 수 있는데, read me 의 test.zip은 다운 경로가 없고 권한이 없다는 메세지를 띄우는 JS코드가 박혀있다.test.zip을 열어보는 것이 목표일 것이다. test.txt의 다운로드 URL을 보면 파라미터로 base64의 값을 보내는 것을 확인 할 수 있다. 이는 test.txt의 base64 encode한 값이다.예상으로 파라미터를 test.zip의 base64 encode한 값을 넣으면 다운 받을 수 있을 것 같다. test.zip을 base64 인코딩 한 값은 dGVzdC56aXA= 이고, 이를 파라미터에 넣으면 ..

wargame/webhacking.kr 2018.08.13 (1)

webhacking.kr 18번 풀이

webhacking.kr 18번 풀이 간단한 인증우회 문제 [HINT] 1. SQL Injection2. space bypass no를 get 파라미터로 받는다.no는 특정 문자열이 들어가있으면 필터링하고들어가있지 않은 경우, sql query를 요청한다. 반환값으로 admin이면 문제를 풀 수 있다. table에 있는 값은 1이 guest, 2가 admin이다. where 조건문의 id가 guest로 고정되어 있으므로 no에서 sql injection을 시도하여 admin 값을 반환하게 한다.간단하게 2 or 1=1로 시도했다. 참고로 int형의 컬럼에 조건문을 걸 때는 싱글쿼터 등의 구분자를 적지 않고 숫자만을 입력할 수 있으니int형의 컬럼 조건문에 sql injection을 걸 때에는 싱글쿼터가 ..

webhacking.kr 34번 풀이

webhacking.kr 34번 풀이 문제 자체를 푸는데 있어서는 왜 이렇게 높은 배점이 책정되어있는가 조금 의문이 들 정도로 무슨 의도인지 모르겠는 문제 [HINT] 1. JavaScript2. 난독화(????) 문제에 접근하면 Wrong이라는 메세지 박스가 뜨고 검은 화면밖에 보이지않는다.페이지의 소스를 보면 난독화가 되어 있다. 글자는 왜 깨져있는지 모르겠다. 하지만 개발자 도구로 보게 되면 언패킹 된 JS코드가 보이게 된다.url에 0lDz0mBi2라는 문자열이 있으면 Passw0RRdd.pww 페이지로 이동하고 아니면 메세지 박스를 띄운다. 난독화 문제인데 왜 소스 코드 막 줄에 구지 언패킹 된 소스를 노출시킨건지 이해가 되지 않았다.바쁜 웹 해킹.kr 개발자의 의도는 지금은 잘 알턱이 없고 난..

wargame/webhacking.kr 2018.08.10 (1)

webhacking.kr 8번 풀이

webhacking.kr 8번 풀이 [HINT] 1. SQL Injection in INSERT query2. 환경 변수 문제에서는 클라이언트의 HTTP_USER_AGENT와 REMOTE_ADDR를 가져와 각각 $agent,$ip에 저장한다.$agent 변수에서 문자열 앞 뒤 공백 제거, 일부 문자열 치환 및 필터링, 소문자 치환 과정을 거친다. 이후 $_SERVER를 통해 HTTP_USER_AGENT를 가져와서 싱글쿼터(')와 \를 필터링한다.싱글 쿼터(')와 \를 필터링한 HTTP_USER_AGENT의 값으로 쿼리를 불러오고 쿼리의 반환 값으로 "admin"이 있다면 문제를 해결할 수 있다."admin" 값이 없다면 agent, ip, id 테이블 안에 각각 변수 $agent,$ip 와 문자열 'gu..

webhacking.kr 17번 풀이

webhacking.kr 17번 풀이 [HINT] 1. javascript JS는 client side script이므로 클라이언트 측에서 소스를 열람할 수 있고 변조할 수 있다. 소스에선 unlock 변수에 계산하기 힘든 사칙연산의 결과값을 저장하고 있고,sub()함수는 페이지에 있는 textbox의 값이 unlock 변수에 저장된 값과 같으면 Password is (unlock/10)를 출력한다. 열람도 가능하고 변조도 가능하기 때문에 풀이 방법은 여러가지 방법이 될 수 있다.첫 번째로 소스코드를 열람 할 수 있는 성질을 이용할 수 있다. 사칙 연산의 내용을 볼 수 있기에 python이나 다른 스크립트를 통해 unlock의 값을 계산해낼 수 있다.직접 손으로도 가능하긴 하다. 두 번째 방법으로는 페이..

wargame/webhacking.kr 2018.08.08 (1)

webhacking.kr 4번 풀이

webhacking.kr 4번 풀이 webhacking.kr은 문제 목표가 뚜렷해서 공부하기 편하지만가끔 무슨 의도의 문제인지 모르는 문제들이 있다.그 중 하나인 문제 같다. [HINT] 1. base 642. Rainbow Table 문제는 Password를 입력할 수 있는 textbox와 summit 버튼, 알 수 없는 문자열을 볼 수 있다.뒤에 '==' 패딩되어 있는 것을 보아 base64로 인코딩된 문자열인 것을 확인 할 수 있다.알파벳 대소문자, "+", "/" , "="으로 이루어져있고, 24bit단위로 인코딩 되기 때문에 24bit단위가 아닌 문자열의 끝에는 "=", "=="으로 패딩된다. 24bit 단위인 문자열은 패딩 문자 "="가 붙지 않으므로 패딩 문자가 없다해서 base64가 아닐거..

webhacking.kr 14번 풀이

webhacking.kr 14번 풀이 자바스크립트가 어디서 동작하는지만 알면 클리어 되는 문제이다. [HINT] 1. javascript URL을 보면 알 수 있지만, JS, 자바스크립트에 관한 문제임을 알 수 있다.JavaScript와 PHP의 차이라고 한다면 어디서 소스가 실행되느냐를 따질 수 있다. 웹 페이지에서 실행되는 JS의 경우, PHP와 다르게 소스를 클라이언트가 볼 수 있고 그것을 변조할 수도 있다.그러므로 소스보기나 개발자 도구(F12)를 통해 소스를 보게 되면 javascript 구문을 볼 수 있다. 사이에 있는 이 소스가 js 소스이며 문제 페이지에 있는 입력 칸에 적은 값이 ul의 값과 같다면 password의 값을 내놓고 그 값은 ul의 제곱과 같다.(입력 값(pw.input_pw..

wargame/webhacking.kr 2015.08.14 (1)

webhacking.kr 6번 풀이

webhacking.kr 6번 풀이webhacking.kr의 100점짜리로 매우 쉬운 문제이다.php 소스만 읽을 줄 안다면 약간의 노가다로도 풀어지는 문제고필자도 처음엔 일일이 인코딩해서 풀었다. [HINT] 1. base64 Encoding 문제의 첫 화면을 보게 되면 ID : guest 와 PW : 123qwe 을 볼 수 있다.그리고 HINT인 base64와 php source 파일 링크가 있다. 여기에서 정보는 이 정도이니 phps 파일을 보도록 하자. 소스 파일을 열게 되면 가장 먼저 보이는 소스인데,먼저 문제 풀이에 쿠키를 사용함을 볼 수 있다. 이 소스를 해석하자면만약 user라는 이름의 쿠키가 존재하지 않을 때, $val_id 와 $val_pw인 'guest'와 '123qwe'를 base6..

wargame/webhacking.kr 2015.08.13 (1)