해당 주소로 들어가면 슬라임같이 생긴 것이 마우스를 따라온다.
조금 움직이다 보면 슬라임에 잡혀 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 |