첫 시작화면이다. 어떤 아저씨가 명상하고 있는것같다. 그건 중요한게 아니니 일단 소스를 먼저 보자.
admin이 대놓고 올라와있다. 감사한 마음으로 들어가보자. 대충 다른 좌표랑 비교해보니 우측상단인데 저기 용이있는곳이 클릭이 된다. 저거같으니 들어가 보자.
아주 기본적인 로그인 창이다. 별로 얻을게 없는 것 같으니 다시 돌아가서 게시판을 들어가보았다.
글이 하나 보인다. 들어가보자.
잠겨있었다. 이런....
근데 아까전부터 쿠키값에 time이라는게 있었다. 일단 index를 들어가보기로 했다. index.php를 주소창뒤에 붙여주기만 하면 된다. 똑같은데 소스를 보면 살짝 차이가 있다.
현재 시간값이 나온다. 이러면 아마 쿠키값은 php시간함수를 사용하는 것 같다.
거짓값을 쿠키에 넣어봤다.
그랬더니 거짓값이 나왔다.
그럼 이제 참값을 넣어보자.
아까보다 1초가 더해졌다. 여기서 우리는 참일때와 거짓일때의 반응이 다르다는 것을 알아냈다. 그렇다면 blind sql injection을 해야될것이다. 하기전에 추측을 한번 해봐야 할 것 같다. 일단 게시판에 FreeB0aRd라는 글씨가 있다. 이걸 테이블로 한번 guessing 해봐야 할것같다. 쿼리문을 1506877571 and (select ascii(substring(password,1,1))from FreeB0aRd)<50으로 일단 쳐보았다. 거짓이였다..... 1506877571 and (select ascii(substring(password,1,1))from FreeB0aRd)<60은 진실이였다.ㅎㅎ 그럼 중간값을 넣어보자. 1506877571 and (select ascii(substring(password,1,1))from FreeB0aRd)<55 거짓이였다. 1506877571 and (select ascii(substring(password,1,1))from FreeB0aRd)>55 또 거짓이다. 그럼 나온것 같다. 마지막으로 1506877571 and (select ascii
(substring(password,1,1))from FreeB0aRd)=55을 넣어보았다.
진실이였다.ㅎㅎ 근데 이제 첫글자를 알아냈다. 이렇게 해선 곧 포기할것같으니 코딩을 한번 해보자.
이렇게 코딩을 해준뒤에 돌리면
비밀번호값이 나온다.
그 다음에 그 값을 게시판에 써주면 파일을 다운받을수 있다. 다운받아보자.
비밀번호가 걸려있다. 2번문제인데 뭐가 이렇게 귀찮게 했는지는 모르지만 일단 아까 admin에가서 비밀번호를 넣어보자.
그럼 또 메뉴얼 패스워드를 준다. 그걸 아까 비밀번호가 걸린 압축파일에 넣으면
이렇게 풀리게 된다. 2번치고 굉장히 복잡한 문제였다.