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
Wargame/Webhacking.kr2017. 6. 17. 00:47

 

회원가입과 마찬가지로 해당 암호를 해독(복호화) 문제로 보여진다.

 

문장끝에 "=="는 base64 인코딩의 특징이므로 base64 디코딩을 한다.

 

[Base64 decode 결과]

 

첫번째 decode 값을 제출해보았지만 아무 반응이 없다.

 

[Base64 decode 2회 결과]

 

decode 결과가 제대로 출력되지 않는다.

 

base64가 외에 다른 인코딩 방식이 추가 사용됬을 것으로 보여진다.

 

[해시 함수 비교 - 출처 : 위키백과]

 

"c4033bff94b567a190e33faa551f411caef444f2" 40글자 즉 40 * 4 (bit)=160 (bit) 의 출력값을 가지는 해시알고리즘은

RIPEMD-160 / SHA-0,1 / Tiger-160 이 있다.

 

https://md5hashing.net/hash 사이트를 이용하여 decrypt 를 시도해보았다.

 

1. RIPEMD-160 decrypt 시도

[Ripemd160 decrypt 결과 - 실패]

 

2. SHA-1 decrypt 시도

[SHA1 decrypt 결과 - 성공?]

 

해당 결과값을 제출해보았지만 답은 아니였다.

한번 더 복호화을 시도해보았다.

 

 

[SHA1 decrypt 2회차 결과 - 성공?]

 

드디어 제대로된 문자가 나왔다.

해당 결과값을 제출하면 Congratulation! 창을 볼 수 있다.

 

'때려 맞추기'였지만 어찌됬든 통과!!

 

 

 

'Wargame > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr - 5번  (0) 2017.06.21
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
Wargame/Webhacking.kr2017. 6. 17. 00:42

추억의 네모로직이 등장한다.

 

문제를 풀고나면 입력페이지가 나타난다.

 

["admin" 을 넣었을때 결과 화면]

 

이름을 입력하면 답과 현재 접속중인 IP 정보가 출력된다.

 

입력창에 소스를 살펴보면

 

 

post 방식의 form에 hidden 속성의 answer 가 존재함을 확인 할 수 있다.

 

burpsuite 로 해당 내용을 확인할 수 있다.

 

[burpsuit intercept 화면]

 

hidden 속성값에 injection 을 시도해보면

 

 

no hack 이 출력된다.

즉, hidden 속성인 answer 이 공격 포인트!!

 

필터링 체크를 위해 몇개의 문자를 테스트해보면

|, ||, " : query error!

', =, %3d : no hack

 

"||" 를 쓰는데는 문제가 없어 보이지만 "=" 는 확실히 차단되고 있음을 알 수 있다.

 

"|| 1" 을 통해 injection 이 성공하면 기존에 출력되던 내용과 다른 결과를 확인할 수 있다.

(당황스럽게도 "=" 우회 시도가 바로 성공해 버렸다;;)

 

 

Auth 페이지 Flag에 위 answer 값을 입력하여 제출하면 challenge 3 clear! 창을 확인 할 수 있다.

(Auth 는 메인페이지 challenges 옆에 존재한다.)

'Wargame > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr - 5번  (0) 2017.06.21
Webhacking.kr - 4번  (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