이 문제는 Webhacking.kr 에서 500점인 문제인데 한 번 도전해보고 싶어서 해봤다.



게시판들을 보다가 코드를 까보니 admin이라는 페이지가 있어서 들어가봤다.

들어갔더니 다음과 같은 페이지가 나왔다.

당연히 비밀번호를 모르기에 찾아보던 중

mainpage 에서 아래와 같은 주석을 발견했다.


쿠키를 보니 time 이라는 이름의 쿠키가 있었다.



여기서 어떻게 해야되는 지 고민하다가 찾아보니 쿠키나 세션 또한 데이터베이스에 저장할 수 있다고 한다.

그래서 여기에 True/False 에 따른 변화를 보기 위해 다음과 같이 입력해보니

참일때에는 다음과 같이


주석 내의 시간이 이렇게 변했고,

거짓일때에는 다음과 같이

이렇게 변했다.


이 문제에는 암호를 입력해야 되는 페이지가 2개 있었는데

하나는 Board, 다른 하나는 Admin 이었다.

그래서 이걸 이용해서 이 둘의 password 를 알아내기로 했다.

일단 각 Password의 길이를 알아내기 위해 다음과 같은 방법으로 찾아보니

freeboard 는 9 글자, Admin 은 10 글자였다.



여기서 table 명은 board 페이지에 들어가면



이렇게 나와있어서 위와 같이 했고, admin 은 별다른 힌트가 없어서 admin 이라고 했다.

( 찾아보니 예전에는 힌트로 Table 명을 제공했다고 한다. )

( 이 외에 Table 명 Column 명을 알아내는 방법을 찾아봤는데 Union 으로 찾을 수 있다고 하는데 직접 해보니까 안 되서 그냥 안 했다. )


그래서 다음과 같은 사이트에서 코드를 가져와서 돌려봤다.

http://rootnix.in/80

코드는 다음과 같고


실행해보니 다음과 같이 20분 정도 걸려서 비밀번호가 나왔다.



admin page 에 비밀번호를 입력하니 다음과 같이 나왔고


Free Board 게시글에 비밀번호를 입력하니 다음과 같이 다운 받을 수 있는 파일이 나와서 다운을 받았다.



압축 해제를 하니 manual.html 의 암호를 입력하라는 창이 나왔고,

admin page 에서 얻은 암호를 입력하니 다음과 같은 html 파일이 나왔다.




manual.html 파일을 열어보니 다음과 같이 Auth Key 가 나왔다.



500점 짜리 성공! 



난이도 자체는 Suninatas 22번, 23번이랑 비슷한 것 같다.


프록시 툴 사용을 마쳤다면 원래대로 설정해놓자.




'Hacking > Web Hacking' 카테고리의 다른 글

Webhacking.kr 14번 문제  (0) 2018.09.18
Webhacking.kr 15번 문제  (0) 2018.09.18
Webhacking.kr 1번 문제  (0) 2018.09.18
Suninatas 8번 문제  (0) 2018.09.09
Suninatas 7번 문제  (0) 2018.09.07


문제를 들어가니 이런 화면이 나왔다.



코드를 보니 클릭 이벤트 발생시 index.phps 라는 곳으로 이동하도록 링크되어있었다.



index.phps 로 들어가보니 다음과 같은 코드가 나왔다.



user_lv 이라는 이름의 쿠키가 없으면 만들고 값을 1로 넣어놨다.

eregi 라는 함수는 필터링 함수인데 eregi("찾고자 하는 문자", "임의의 값") 과 같이 사용하고 대소문자의 구분이 없다.

^은 not 표시 이다. [^0-9,.] 는 정규식인데 숫자와 ',', '.'를 나타낸다.

한마디로 user_lv 이라는 쿠키에 숫자, ',', '.' 없다면 true를 반환해서 user_lv의 값을 1로 설정하고,

user_lv 의 값이 6이상이라면 마찬가지로 1로, 5 초과라면 solve()라는 함수를 불러온다.

solve 라는 함수가 무슨 역할을 하는지는 모르겠지만 이름만 보면 풀릴것 같다.



따라서 1로 설정된 쿠키값을 5 초과 6 미만인 수를 쿠키 값에 넣어봤다.




성공적으로 풀렸다!

하지만 고등학교때 풀었던 문제라 성공했다는 말은 안 나왔다.

그래도 까먹은게 어느정도 돌아온 것 같아 나쁘지 않은 경험이였다.



'Hacking > Web Hacking' 카테고리의 다른 글

Webhacking.kr 15번 문제  (0) 2018.09.18
Webhacking.kr 2번 문제  (0) 2018.09.18
Suninatas 8번 문제  (0) 2018.09.09
Suninatas 7번 문제  (0) 2018.09.07
Suninatas 6번 문제  (0) 2018.09.07

< 알아야 >


Python Module -> urllib2

쿠키쿠키쿠키쿠키쿠키쿠키쿠키쿠키쿠키

HTTP 이용해 서버에 무언가를 전달하는 방식 -> GET/POST

Python 문법

Burp Suite 기능 하나, Intruder 사용법


< 풀이 >

들어가니 아이디랑 비밀번호를 입력하라고 나온다.

힌트를 보니 admin 으로 로그인을 하라는 비밀번호가 0 ~ 9999 사이라고 한다.

처음에는 다른 풀이글을 보고 Burp Suite Intruder 풀어보려고 했다.

Proxy 탭의 Request 창에서 Send to Intruder 선택하고 



원래 다음과 같았던 내용을 


페이로드 시킬 부분은 PW 뿐이기에 나머지는 § 지워 이렇게 만든다. ( 페이로드란 전송의 목적이 되는 데이터이다. )



페이로드 타입은 0 ~ 9999 이므로 숫자이고, 1씩 체크해볼것이기 때문에 다음과 같이 설정해놨다.



이대로 하면 되기는 하는데 정말정말 느리다. 이대로 하면 몇시간이고 기다려야겠다 싶어서 다른 방법을 찾아봤다.



다른 풀이로는 파이썬 코드를 통해 브루트 포싱( 하나하나 다 해보는 것 )해볼 수 있다고 하길래 User-Agent와 

Edit this cookie 에서 쿠키값을 복사해와서 Cookie 값을 바꿔서 다른 블로그의 코드로 실행해보았다.


실행이 되긴 되는데 찾지도 않고 패스워드가 0이라고 나온다. 그래서 왜 그러지 싶어서 response 를 출력해보니

로그인을 먼저하라는 alert 창을 띄우는 코드가 뜬다. 이걸보고 난 쿠키값 제대로 입력했는데 뭐가 문제지..? 싶었다.



한참을 고민하다 Burp Suite로 Request 한 번 다시 봐보기로 했다. Request 를 열어보니 Cookie 값이 

내가 입력한 거랑 전혀 달랐다. 설마 싶어 복사해서 붙여넣어보니 ..

됐다!


꼭 섬세하지 못하게 풀다가 실수하고 고생하는 것 같다.

고쳐야겠다.


< 알아가야 >

 

섬세함.

파이썬 urllib2 모듈

'Hacking > Web Hacking' 카테고리의 다른 글

Webhacking.kr 2번 문제  (0) 2018.09.18
Webhacking.kr 1번 문제  (0) 2018.09.18
Suninatas 7번 문제  (0) 2018.09.07
Suninatas 6번 문제  (0) 2018.09.07
Suninatas 5번 문제  (0) 2018.09.05