http://webhacking.kr/challenge/web/web-05/




메인화면



로그인 할 계정이 없어 Join 버튼을 눌렀더니 Access_Denied라는 알림창이 나왔다.



                


그래서 Login 버튼을 누르고 SQL Injection을 수행해보니,

admin이 아니라서 Access Denied 되었다.


admin 아이디와 임의의 패스워드를 입력해 로그인을 하니,

잘못된 패스워드라고 한다.




메인화면의 소스코드를 확인해보니,

login.php가 mem 디렉토리에 있는 것이 보였다.




Directory Listing 취약점을 이용해 

mem 디렉토리 안에 join.php가 있는 것을 발견했다.




http://webhacking.kr/challenge/web/web-05/mem/join.php 로 들어갔다. 검정 화면밖에 나오지 않았다.

그래서 소스코드를 확인해보니, 난독화되어 있었다.



notepad++를 이용해 난독화를 풀었다.

내용은 다음과 같았다.

1. oldzombie라는 쿠키가 있어야 한다.

2. url에 mode=1이 있어야 한다.




EditThisCookie를 이용해 oldzombie 쿠키를 만들고,

url에 파라미터 형태로 mode=1을 추가했더니 회원가입 화면이 나왔다.



admin은 이미 존재하는 아이디이기 때문에 가입할 수 없었고,

id 최대 입력 값은 5자리로 제한되어 있는 것이 이상했다.


※insert 에러

insert 에러란, DB column의 길이가 제한되어 있을 때 그 이상의 길이를 갖고 있는 값이 들어와도

제한된 길이만큼만 저장하고, 나머지는 버리는 것이다.

ex) id varchar(5) 라고 설정되어있는 경우, abcdefg를 입력받아도 DB에는 abcde만 저장된다.




개발자 도구를 이용해서 maxlength 값을 변경하고 회원가입을 한다.



 

admin1이라는 id로 회원가입을 했지만,

1은 버려지고 새로운 admin 계정이 생성되었을 것이다.


새로 가입한 계정(admin/1111)을 가지고 로그인을 시도하면

끝!





'문제풀이 > webhacking.kr' 카테고리의 다른 글

webhacking.kr - 4번  (0) 2017.07.31
webhacking.kr - 3번  (0) 2017.07.31
webhscking.kr - 2번  (0) 2017.07.31
webhacking.kr - 1번  (0) 2017.07.31
webhacking.kr - 회원가입  (0) 2017.07.31

+ Recent posts