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
no image
webhacking.kr challenge 24
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 쿠키의 REMTE_ADDR이 ip가 되므로 “127.0.0.1”을 입력해야 한다. 하지만 “..”은 “.”으로, “12”, “7.”, “0.”은 지워지므로 변형이 필요하다. 따라서 REMOTE_ADDR이라는 쿠키를 만들고 값을 “112277…00…00…1”이라고 설정하면 ip에 127.0.0.1이 들어가면서 문제가 풀린다.
2020.06.27
no image
webhacking.kr challenge 23
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ 23번 문제에 들어가니 alert(1); 명령을 실행시켜서 1이 출력되면 문제가 풀리는 것을 확인할 수 있다. 먼저 alert(1);를 그대로 입력하니 ‘no hack’이 출력되었다. 어떤 상황에서 ‘no hack’이 출력되는지 확인하기 위해 여러 값을 입력해보았다. 일단 1212라는 숫자를 입력했더니 1212가 그대로 출력되었다. 그 다음으로는 아무 문자열이나 입력해보았더니 ‘no hack’이 출력되었다. 다음으로 0x를 입력했더니 그대로 출력이 되었다. 이것을 통해 연속된 문자열은 걸러지는 것을 확인할 수 있다. 예측한 대로 ‘a b’라고 공백을 주어서 입력하니 문자열이 그대로 출력되었다. 역시 따로 필터링 되지..
2020.06.27
no image
webhacking.kr challenge 20
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ script의 ck 함수를 살펴보면 lv5frm.id.value와 lv5frm.cmt.value, lv5frm.captcha.value의 값이 공백이 아니고, lv5frm.captcha.value의 값이 lvm5frm.captcha_.value와 동일하면 lv5frm.submit()이 되면서 문제가 풀린다. chaptcha의 값이 새로 고침을 할 때마다 바뀌고, 2초의 time limit가 있기 때문에 콘솔 창을 이용해서 2초 안에 위의 코드를 입력하면 문제가 풀린다.
2020.06.26

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

 

 

 

 문제에 들어가면 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

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

 

 

 

 쿠키의 REMTE_ADDRip가 되므로 “127.0.0.1”을 입력해야 한다. 하지만 “..”“.”으로, “12”, “7.”, “0.”은 지워지므로 변형이 필요하다. 따라서 REMOTE_ADDR이라는 쿠키를 만들고 값을 “112277…00…00…1”이라고 설정하면 ip127.0.0.1이 들어가면서 문제가 풀린다.

 

 

728x90

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

webhacking.kr challenge 26  (0) 2020.06.27
webhacking.kr challenge 25  (0) 2020.06.27
webhacking.kr challenge 23  (0) 2020.06.27
webhacking.kr challenge 20  (0) 2020.06.26
webhacking.kr challenge 19  (0) 2020.06.26

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

 

 

 

 23번 문제에 들어가니 <script>alert(1);</alert> 명령을 실행시켜서 1이 출력되면 문제가 풀리는 것을 확인할 수 있다.

 

 

먼저 <script>alert(1);</alert>를 그대로 입력하니 ‘no hack’이 출력되었다.

 

  

 어떤 상황에서 ‘no hack’이 출력되는지 확인하기 위해 여러 값을 입력해보았다. 일단 1212라는 숫자를 입력했더니 1212가 그대로 출력되었다.

  

 

 그 다음으로는 아무 문자열이나 입력해보았더니 ‘no hack’이 출력되었다.

 

  

 다음으로 0x를 입력했더니 그대로 출력이 되었다. 이것을 통해 연속된 문자열은 걸러지는 것을 확인할 수 있다.

 

  

 예측한 대로 ‘a b’라고 공백을 주어서 입력하니 문자열이 그대로 출력되었다.

 

  

<> 역시 따로 필터링 되지 않고 출력되었다.

 

 

 문제를 풀기 위해서 ‘<s c r i p t>a l e r t(1);</s c r i p t>’ 라고 공백을 두어서 입력했다. ‘no hack’이 출력되지는 않았지만 문제가 풀리지 않고 alert(1)에 줄이 그어져서 출력되었다.

 

 

 주소창에서 %20 %0a로 바꿔서 ’<s%0ac%0ar%0ai%0ap%0at>a%0al%0ae%0ar%0at(1);</s%

0ac%0ar%0ai%0ap%0at>’라고 입력했지만 여전히 문제가 해결되지 않았다.

 

 

 검색을 해보니 이 문제의 경우 %00(null)을 사이에 넣어줘야 한대서 ‘<s%00c%00r%00i%00p%00

t>a%00l%00e%00r%00t(1);</s%00c%00r%00i%00p%00t>’라고 입력하니 문제가 풀렸다.

 

728x90

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

webhacking.kr challenge 25  (0) 2020.06.27
webhacking.kr challenge 24  (0) 2020.06.27
webhacking.kr challenge 20  (0) 2020.06.26
webhacking.kr challenge 19  (0) 2020.06.26
webhacking.kr challenge 18  (0) 2020.06.26

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

 

 

 

 scriptck 함수를 살펴보면 lv5frm.id.value lv5frm.cmt.value, lv5frm.captcha.value의 값이 공백이 아니고, lv5frm.captcha.value의 값이 lvm5frm.captcha_.value와 동일하면 lv5frm.submit()이 되면서 문제가 풀린다. chaptcha의 값이 새로 고침을 할 때마다 바뀌고, 2초의 time limit가 있기 때문에 콘솔 창을 이용해서 2초 안에 위의 코드를 입력하면 문제가 풀린다.

 

 

 

728x90

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

webhacking.kr challenge 24  (0) 2020.06.27
webhacking.kr challenge 23  (0) 2020.06.27
webhacking.kr challenge 19  (0) 2020.06.26
webhacking.kr challenge 18  (0) 2020.06.26
webhacking.kr challenge 17  (0) 2020.06.26