IE에서 정상 동작한다. 안움직인다
게임같이 보이는데 사실 게임이 중요한게 아니다.
Score와 x,y가 계속 쓰여지는데 이값은 GAME OVER 창이 뜨면서 점수표로 보내진다.
이걸 조작해서 내 점수를 상위에 올리는게 목표라 할 수 있겠다.
랭크테이블은 이렇게 생겼는데, 아래에 주석으로 힌트가 기재되어 있다
<!-- hint rank table ==================== ip ( = id ) score **password** --> small letter ==================== -->
아직까지는 뭘 어케 하는지 모르겠다.
GET의 score에 점수를 넣으면 해당 점수가 조회되는데, 점수를 대강 적고 or 1=1을 해보니 localhost가 나왔다.
그래서
http://webhacking.kr/challenge/web/web-31/rank.php?score=48851132%20or%20substr%28password,1,1%29=a
를 날려보니 no hack이 날아왔다.
substr은 필터링되있나보다. MID로 해보려니까 얘도 필터링 되있다 left, right은 된다.
그럼 이런식으로 하면 되지 않을까?
right(left(password,1),1)
이렇게 하면 left가 자르는값에서 right가 항상 땡겨오니 최신값을 비교할 수 있을 것 같았다. no hack도 안나오고 한번 돌려보기로 한다
안된다. 왜 안될까, 근데 생각해보니, 컬럼명이 애초에 password가 아닐 수 있다는 생각을 했다. 우린 select도 안하고 테이블 컬럼을 땡기는걸 했지 않나.
힌트에 의하면 password는 3번째 컬럼에 있다. limit가 되냐? 된다.
0 limit 2, 1 procedure analyse()
기가맥힌 패스워드 컬럼이 나온다. 어이가 없어서 잠시 벙쪘지만 다시 해보도록 하자.
http://webhacking.kr/challenge/web/web-31/rank.php?score=2147483647%20or%20right(left(컬럼,{}),1)={}
이렇게 구성한다. 2147483647에 해당하는 아이디 대신에 localhost가 나온다면 해당값이 바로 매치된다고 할 수 있다.
원래는 length도 구하고 해야되는데 이제 끝이 보이니 빨리 끝내고 싶은 마음에 그냥 33자리로 돌렸다..
어쨌뜬 그러면 아주 긴~~~ 녀석이 하나 나온다. 몇자린지는 안알려준다.
그리고 힌트의 small letter이라고 적힌건 뻥이다. 특문도 있고 숫자도 있다 ㅡㅡ