no image
webhacking.kr challenge 38
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 주석 처리된 a href를 해제하면 admin page 링크가 나타난다. 이동해보면 log viewe과 ‘You must logged ad “admin”’이라는 문장이 보인다. “admin”이라 입력하면 제대로 동작하지 않는다. 이는 CR-LF injection을 이용하여 풀 수 있다. Input을 textarea로 바꾼 후 줄바꿈과 ip:admin이라고 입력하면 문제가 풀린다.
2020.06.27
no image
webhacking.kr challenge 36
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ vi의 임시 파일은 swp 형식으로 저장된다. 따라서 ‘.index.php.swp’이라고 입력하면 임시 파일을 받을 수 있다.
2020.06.27
no image
webhacking.kr challenge 35
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 문제 화면과 소스 코드이다. id가 admin이고, 접속한 ip가 컬럼에 들어있는 값과 일치해야 문제가 풀린다. 따라서 (id, ip, phone)의 양식에 맞게 (‘admin’, ‘내 ip 주소’, ‘번호’)를 넣어주면 된다. 1234),('admin','ip 주소','2345'를 phone 변수에 넣어주면 문제가 풀린다.
2020.06.27
no image
webhacking.kr challenge 34
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 문제에 들어가면 debug me라고 뜨고는 검은 창만 뜬다. 소스 보기를 해보면 난독화 된 소스 코드가 보인다. 처음 들어갔을 때 alert가 되므로 alert를 검색해보았다. alert(b('0x1e','14cN'))라는 코드를 확인할 수 있다. 콘솔 창에 입력해보면 접속했을 때와 동일하게 debug me가 뜨는 것을 확인할 수 있다. alert가 else에 있으므로 그 앞의 if 부분을 살펴보았다. 소스 코드를 정리해보면 다음과 같다. 참일 경우에 있는 b('0x1c','4c%d')와 b('0x1d','llaF')가 무슨 뜻인지 궁금해서 alert로 띄워보았다. href와 ./?Passw0RRdd=1를 의미했다...
2020.06.27
no image
webhacking.kr challenge 32
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 문제를 클릭하면 랭킹표가 뜬다. 하단으로 내려보면 join 버튼이 있고, 클릭하면 내 아이디로 알림이 뜨게 된다. 아이디를 찾아서 클릭하면 주소창에 hit=아이디가 뜨고, no!라는 창이 나온다. (다른 아이디를 클릭해도 동일하다.) 이거를 되게 해서 랭킹을 올리면 될 것 같다. 쿠키를 확인해보니 vote_check라는 것이 생겼다. 쿠키가 뜨지 않도록 차단한 후 다시 아이디를 클릭했다. 0에서 1로 값이 증가했다. 이것을 문제가 해결될 때까지 반복한다.
2020.06.27
no image
webhacking.kr challenge 27
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 소스를 확인하면 preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no']) 함수로 #, select, (, 공백, limit, = 등을 입력하면 “no hack”이라고 뜨게 되는 것을 확인할 수 있다. 또한 no=({$_GET['no']}) 부분을 보면 괄호 안에 값이 들어가는 것을 확인할 수 있다. 1을 입력한 후 제출을 눌러보니 guest라고 뜨는 것을 확인할 수 있다. 반면에 2를 입력해보니 query error라고 뜬다. 소스를 보면 admin’s no=2라고 나오기 때문에 2라는 값을 넘겨주어야 한다. 따라서 쿼리문이 ‘no=(0) or no=2’가 되어야 한다. 이때 ..
2020.06.27
no image
webhacking.kr challenge 26
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 웹 해킹 26번을 클릭하면 다음과 같은 화면이 뜬다. if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); } $_GET['id'] = urldecode($_GET['id']); if($_GET['id'] == "admin"){ solve(26); } View-source를 클릭하여 보면 다음과 같은 코드가 보인다. 코드를 해석해보면, id가 admin일 때 ‘no!’ 를 띄우고, id를 decode 했을 때 admin이 나오면 문제가 풀린다. 일단 ‘?id=admin’으로 id에 admin이라는 값을 보내면 코드에 나온 것처럼 다음과 같이 ‘no!’ 라고 뜬다. ..
2020.06.27
no image
webhacking.kr challenge 25
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 문제에 들어가면 파일 구조를 보여준다. flag.php, hello.php, index.php가 존재하며 hello는 “hello”를 출력하고, index는 아무 것도 출력하지 않으며 flag는 “FLAG is in the code”라고 출력한다. “php://filter/convert.base64-encode/resource=flag”를 입력하면 flag 파일의 모든 코드를 base64로 출력한다. 출력된 문장을 base64로 디코딩하면 flag가 출력되고, 이를 입력하면 문제가 풀린다.
2020.06.27

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

주석 처리된 a href를 해제하면 admin page 링크가 나타난다. 이동해보면 log viewe‘You must logged ad “admin”’이라는 문장이 보인다.

 

 

 

 

 “admin”이라 입력하면 제대로 동작하지 않는다. 이는 CR-LF injection을 이용하여 풀 수 있다.

 

 

 

 Inputtextarea로 바꾼 후 줄바꿈과 ip:admin이라고 입력하면 문제가 풀린다.  

 

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 41  (0) 2020.06.27
webhacking.kr challenge 39  (0) 2020.06.27
webhacking.kr challenge 36  (0) 2020.06.27
webhacking.kr challenge 35  (0) 2020.06.27
webhacking.kr challenge 34  (0) 2020.06.27

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

vi의 임시 파일은 swp 형식으로 저장된다. 따라서 ‘.index.php.swp이라고 입력하면 임시 파일을 받을 수 있다.

 

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 39  (0) 2020.06.27
webhacking.kr challenge 38  (0) 2020.06.27
webhacking.kr challenge 35  (0) 2020.06.27
webhacking.kr challenge 34  (0) 2020.06.27
webhacking.kr challenge 32  (0) 2020.06.27

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

 문제 화면과 소스 코드이다.

 

 

 idadmin이고, 접속한 ip가 컬럼에 들어있는 값과 일치해야 문제가 풀린다. 따라서 (id, ip, phone)의 양식에 맞게 (‘admin’, ‘ip 주소’, ‘번호’)를 넣어주면 된다.

 

 

 

 1234),('admin','ip 주소','2345'phone 변수에 넣어주면 문제가 풀린다.

 

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 38  (0) 2020.06.27
webhacking.kr challenge 36  (0) 2020.06.27
webhacking.kr challenge 34  (0) 2020.06.27
webhacking.kr challenge 32  (0) 2020.06.27
webhacking.kr challenge 27  (0) 2020.06.27

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

 문제에 들어가면 debug me라고 뜨고는 검은 창만 뜬다.

 

 

 소스 보기를 해보면 난독화 된 소스 코드가 보인다.

 

 

 처음 들어갔을 때 alert가 되므로 alert를 검색해보았다. alert(b('0x1e','14cN'))라는 코드를 확인할 수 있다.

 

 

 콘솔 창에 입력해보면 접속했을 때와 동일하게 debug me가 뜨는 것을 확인할 수 있다. alertelse에 있으므로 그 앞의 if 부분을 살펴보았다.

 

 

 소스 코드를 정리해보면 다음과 같다.

 

 

 

 참일 경우에 있는 b('0x1c','4c%d')b('0x1d','llaF')가 무슨 뜻인지 궁금해서 alert로 띄워보았다. href./?Passw0RRdd=1를 의미했다. , 코드를 정리해보면 location[href]= ./?Passw0RRdd=1가 되는 것이다.

 

 

  주소 뒤에 /?Passw0RRdd=1를 붙여서 들어가니 문제가 풀렸다.

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 36  (0) 2020.06.27
webhacking.kr challenge 35  (0) 2020.06.27
webhacking.kr challenge 32  (0) 2020.06.27
webhacking.kr challenge 27  (0) 2020.06.27
webhacking.kr challenge 26  (0) 2020.06.27

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

문제를 클릭하면 랭킹표가 뜬다.

 

 

 하단으로 내려보면 join 버튼이 있고, 클릭하면 내 아이디로 알림이 뜨게 된다.

 

 

 아이디를 찾아서 클릭하면 주소창에 hit=아이디가 뜨고, no!라는 창이 나온다. (다른 아이디를 클릭해도 동일하다.) 이거를 되게 해서 랭킹을 올리면 될 것 같다.

 

 

 쿠키를 확인해보니 vote_check라는 것이 생겼다.

 

 

 쿠키가 뜨지 않도록 차단한 후 다시 아이디를 클릭했다.

 

 

0에서 1로 값이 증가했다. 이것을 문제가 해결될 때까지 반복한다.

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 35  (0) 2020.06.27
webhacking.kr challenge 34  (0) 2020.06.27
webhacking.kr challenge 27  (0) 2020.06.27
webhacking.kr challenge 26  (0) 2020.06.27
webhacking.kr challenge 25  (0) 2020.06.27

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

소스를 확인하면 preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no']) 함수로 #, select, (, 공백, limit, = 등을 입력하면 “no hack”이라고 뜨게 되는 것을 확인할 수 있다. 또한 no=({$_GET['no']}) 부분을 보면 괄호 안에 값이 들어가는 것을 확인할 수 있다.

 

 

 

 

 

 1을 입력한 후 제출을 눌러보니 guest라고 뜨는 것을 확인할 수 있다.

 

 

 반면에 2를 입력해보니 query error라고 뜬다. 소스를 보면 admin’s no=2라고 나오기 때문에 2라는 값을 넘겨주어야 한다. 따라서 쿼리문이 ‘no=(0) or no=2’가 되어야 한다.

 

 

 

 이때 쿼리문의 ‘)’ 괄호를 무시해야 하기 때문에 주석을 붙여서 ‘no=(0) or no=2 -- ‘라고 입력이 되어야 한다. 하지만 preg_match로 인해서 공백과 = 기호가 입력될 경우 ‘no hack’이 출력되기 때문에 우회를 해야 한다. 공백은 %09, = 기호는 like로 변환을 해준다. , 최종 입력 값은 ‘0)%09or%09no%09like%092%09--%09’가 된다.

 

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 34  (0) 2020.06.27
webhacking.kr challenge 32  (0) 2020.06.27
webhacking.kr challenge 26  (0) 2020.06.27
webhacking.kr challenge 25  (0) 2020.06.27
webhacking.kr challenge 24  (0) 2020.06.27

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

웹 해킹 26번을 클릭하면 다음과 같은 화면이 뜬다.

 

 

if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
$_GET['id'] = urldecode($_GET['id']);
if($_GET['id'] == "admin"){
   solve(26);

}

 

View-source를 클릭하여 보면 다음과 같은 코드가 보인다. 코드를 해석해보면, idadmin일 때 ‘no!’ 를 띄우고, iddecode 했을 때 admin이 나오면 문제가 풀린다.

 

 

일단 ‘?id=admin’으로 id admin이라는 값을 보내면 코드에 나온 것처럼 다음과 같이 ‘no!’ 라고 뜬다.

 

 

아스키 코드 표이다. 표를 참고해서 admin을 아스키 값으로 바꾼 후 입력해보자.

 

 

’?id=%61%64%6D%69%6E’ 라고 입력한 후 엔터를 누르면 값이 자동으로 admin으로 바뀌어서 전송이 된다. 구글링을 해보니 아래와 같은 이유 때문이었다.

 

 

서버와 브라우저 사이에서 데이터 교환 브라우저는 폼에서 입력 받은 데이터를 자동으로 

인코딩한 값을 PHP서버로 보내고 PHP 받은 인코딩 값을 자동으로 디코딩한다.

 

 

  인코딩이 한 번 자동으로 진행되므로 admin을 인코딩한 값을 한번 더 인코딩해준다.

 

 

한번 더 인코딩한 값을 입력해주면 문제가 풀린다.

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 32  (0) 2020.06.27
webhacking.kr challenge 27  (0) 2020.06.27
webhacking.kr challenge 25  (0) 2020.06.27
webhacking.kr challenge 24  (0) 2020.06.27
webhacking.kr challenge 23  (0) 2020.06.27

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 문제에 들어가면 파일 구조를 보여준다. flag.php, hello.php, index.php가 존재하며 hello“hello”를 출력하고, index는 아무 것도 출력하지 않으며 flag“FLAG is in the code”라고 출력한다.

 

 

 

 “php://filter/convert.base64-encode/resource=flag” 입력하면 flag 파일의 모든 코드를 base64로 출력한다.

 

 

출력된 문장을 base64로 디코딩하면 flag가 출력되고, 이를 입력하면 문제가 풀린다.

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 27  (0) 2020.06.27
webhacking.kr challenge 26  (0) 2020.06.27
webhacking.kr challenge 24  (0) 2020.06.27
webhacking.kr challenge 23  (0) 2020.06.27
webhacking.kr challenge 20  (0) 2020.06.26