Login / Join 버튼만이 존재한다. 각 버튼을 눌러보면
[Join 화면]
[Login 화면]
간단한 인젝션을 시도해보았다.
(' or 1=1 --)
[Login 실패]
admin 계정으로 로그인이 필요하며,
join 버튼이 막혀있는것으로 보아 join 페이지를 통해 무언가 해야될것으로 보여진다.
메인페이지 소스를 살펴보면
|
[메인 페이지 소스]
로그인 페이지(login.php) 가 mem 하단 경로에 존재한다.
join 페이지도 같은 경로에 있을거라 예상되므로 접속 시도하면 페이지이동은 성공하나 아무것도 존재하지 않는다.
소스보기를 통해 살펴보면
|
[join.php 소스]
난독화 되어있는 내용이 보인다.
어려운 난독화가 아니니 근성으로 복호화!!
|
[복호화 결과]
쿠키값으로 'oldzombie'가 있어야하며
URL에 'mode=1' 이 존재해야된다.
크롬 개발자도구를 통해 oldzombie 쿠키값을 추가하고
URL에 mode=1을 포함시켜 접속하면 join 폼이 나타난다.
[가입 form]
역시 순순히 admin으로 가입시켜 주진 않는다.
위에 소스를 보면 id 입력필드에 maxlength=5 로 제한되있는걸 볼 수 있다.
프록시툴이나 크롬 개발자도구로 제한을 해제한 후 공백을 붙여 다시 시도해보았다.
"sign up" 이 뜨면서 가입이 완료된다.
가입한 id/pw 로 로그인 시도하면
클리어~!
이번 문제의 핵심이라고 볼수있는 DB 입력 데이터 검증
(잘못 짚었을수도 있다. 하하;)
* MySQL SQL_MODE : SQL 문법과 수행하는 데이터 검증 체크 관련 모드
(https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html)
- Strick Mode off 상태일때 컬럼 사이즈 보다 큰 데이터 입력
|
경고가 발생하지만 값은 입력되며, 입력 데이터는 컬럼사이즈로 잘려서 입력되어있다.
- Strick Mode on 상태일때 컬럼 사이즈 보다 큰 데이터 입력
|
데이터가 입력되지 않는다.
해당 문제의 경우 Join 페이지 상에서 입력 데이터에 대한 검증도 없고, DB 삽입시에 데이터 검증도 없어
'admin ' 이 'admin' 으로 삽입되어 관리자 계정이 탈취(?)되는 문제가 발생하였고 볼 수 있다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr - 4번 (0) | 2017.06.17 |
---|---|
Webhacking.kr - 3번 (0) | 2017.06.17 |
Webhacking.kr - 1번 (0) | 2017.06.16 |
Webhacking.kr - 회원가입 (0) | 2017.06.08 |
webhacking.kr (0) | 2017.06.05 |