'Wargame'에 해당되는 글 29건

  1. 2017.06.21 Webhacking.kr - 5번
  2. 2017.06.17 Webhacking.kr - 4번
  3. 2017.06.17 Webhacking.kr - 3번
  4. 2017.06.16 Webhacking.kr - 1번
  5. 2017.06.08 Webhacking.kr - 회원가입
  6. 2017.06.05 webhacking.kr
  7. 2016.08.22 LOS_dark_eyes
  8. 2016.08.22 LOS_iron_golem
  9. 2016.08.22 LOS_dragon
  10. 2016.08.22 LOS_xavis
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
Wargame/Webhacking.kr2017. 6. 16. 19:36

 

[Level 1 index.phps 내용]

 

해당 소스를 분석해보면 문제를 풀 수 있다.

 

 1. user_lv 쿠키 값을 체크하며, 해당 쿠키값이 존재하지 않을 때

user_lv 를 1로 세팅 후, 새로고침 한다.

* <meta> 태그 "http-equiv=represh content=0" : 0초 후에 새로고침(refresh)

 

2. 문제 풀이의 조건은 간단하다.

* eregi($pattern, %string) : 문자 검색 함수로 대소문자 구별없이 문자를 검색한다.

숫자 이면서  5 < user_lv <= 6 인 값으로 user_lv를 변조하면 solve()를 실행시킬 수 있다.

 

5보다 크고 6보다 작은 숫자는?

 

크롬 개발자도구를 이용하여 해당 조건에 맞는 쿠키값으로 변조하면

Congratulation! 창과 함께 문제가 풀린다.

 

 

[크롬 개발자도구의 쿠키값 확인 - 현재 값 1]

 

 

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

Webhacking.kr - 5번  (0) 2017.06.21
Webhacking.kr - 4번  (0) 2017.06.17
Webhacking.kr - 3번  (0) 2017.06.17
Webhacking.kr - 회원가입  (0) 2017.06.08
webhacking.kr  (0) 2017.06.05
Posted by EJ90000
Wargame/Webhacking.kr2017. 6. 8. 19:15


회원가입 메뉴가 없이 로그인 버튼만 존재한다.


회원가입을 위해 소스를 살펴보면 주석처리된 회원가입(등록) 버튼을 확인 할 수 있다.


[크롬 개발자도구 를 이용항 소스 확인]


크롬 개발자도구를 이용하여 소스 수정 or 해당 URL 로 직접 접속하여 회원가입을 시도한다.

* onclick 이벤트 : 해당 객체 클릭시 이벤트 동작을 정의

* location.href : 페이지 이동


[주석을 해제하여 Register 버튼이 출력됨]



회원가입의 마지막 관문 decode me 의 알수없는 문자를 해독해야한다.


문자열 변환 사이트를 통해 복호화를 시도하면

(추천사이트 : http://www.convertstring.com)


Base64로 디코딩 결과 문장끝에 "=" 가 붙는 base64 인코딩의 형태의 문자로 바뀌는 것을 확인할 수 있다. 


*base64 : 8비트 이진 데이터를 ASCII 영역의 문자열로 바꾸는 인코딩 방식

base6로 바꾸는 과정에서 입력된 바이트가 남는경우 "="으로 패딩처리 한다.

(출처 : 위키백과 https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464)



몇번의 디코딩을 반복하면 최종적 복호화된 값을 확인가능하다.





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

Webhacking.kr - 5번  (0) 2017.06.21
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.05
Posted by EJ90000
Wargame/Webhacking.kr2017. 6. 5. 02:46


대표적인 웹해킹 워게임 중 하나로 회원가입부터 시작이다.

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

Webhacking.kr - 5번  (0) 2017.06.21
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
Posted by EJ90000
2016. 8. 22. 10:18

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2016. 8. 22. 10:16

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2016. 8. 22. 10:12

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2016. 8. 22. 10:08

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.