Wargame/Webhacking.kr2017. 6. 21. 05:18


 

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
Posted by EJ90000