ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CrackUs] LEVEL 20
    [+] Security [+]/CrackUs 2020. 7. 21. 02:03

     

     

    LEVEL 20!

     

    이제 마지막 문제다.

     

    두근두근 코드를 살펴보자!

     

    더보기

     

     

    동일한 SQL Injection 문제지만 여러가지를 막아놓았다.

     

    우선 length! 이는 like '_ _ _ _' 로 길이를 알아낼수 있을 것이다.

     

    substr 또한 mid로 우회하면 된다.

     

    좋아! 그럼 뚫어보자!

     

     

    하지만 도무지 이해가지 않는 부분이 있다.

     

     

    아래의 쿼리는 4초 정도 지연되는 것을 보아 재대로 동작하지만..

     

    제대로 동작!

     

     

    이는 그렇지 못하다.. 동작을 안한다..

     

    안됨.. 왜..????

     

    한시간동안 삽질의 삽질 끝에 문득 든 생각이,

     

    혹시 데이터베이스에 id = admin 계정이 없는 것이 아닐까?

     

    그러고 보니 ID 변수는 UNION 필터링이 없다.

     

    union을 이용한 칼럼 부르트 포싱으로 풀어야 할 것같다. (이게 맞는 풀인지 모르겠다..)

     

    테이블명(play_)이 필터링 되어있으니 칼럼숫자를 조회할 수가 몇인지 알 수 없다.

     

    하나씩 해보는 수 밖에

     

     

    칼럼 수가 2개라면

     

    union select 'admin', 1# &pw=1

    union select 1, 'admin'# &pw=1

     

    칼럼 수가 3개라면

     

    union select 'admin', 1, 1# &pw=1

    union select 1, 'admin', 1# &pw=1

    union select 1, 1, 'admin'# &pw=1

     

    이런식으로 계속...

     

     

    헉!

    다행히 한번에 풀었다.

     

    으아... 드디어 풀었다.

     

     

     

     

    상당부분이 필터링 되어있다.

     

    and와 or 또한 사용할 수 없고, no를 기준으로 쿼리를 받기 때문에 id 와 pw 를 탐색하려면 별도의 방법이 필요하다.

     

    0 ~ 8 까지 

     

    총 row의 갯수는 0~8 까지 총 9개 있는듯 하다.

     

    책에서 소개된 바와같이 if 를 이용하여 id 와 pw를 탐색하도록하자.

     

     

     

    ?no=if(id='admin',1,9) 이런식의 쿼리를 작성한다.

     

    no가 9인 칼럼은 존재하지 않는다. 즉 9를 반환함은 무조건 거짓 을 의미한다.

     

    필자는 ?no=if(id='admin',1,0) 혹은 ?no=if(id='admin',1,false) 을 작성하고, 잘 작동돼지 않아 장시간 고생했다.

     

    false는 0을 의미하는 까닭에 (false==0) db에서 no에 0을 대입하는 순간 result가 생겨버린다.

     

    no=if(id='admin',1,9) 혹은 no=if(id='admin',1,-1) 을 사용하도록 하자.

     

    이런식이다

    id가 admin인 계정은 no가 5인 계정이다.

     

    다음부터는 이전까지와 같다.

     

     

     

    클리어!

     

    '[+] Security [+] > CrackUs' 카테고리의 다른 글

    [CrackUs] LEVEL 19  (0) 2020.07.20
    [CrackUs] LEVEL 18  (0) 2020.07.20
    [CrackUs] LEVEL 17  (0) 2020.07.20
    [CrackUs] LEVEL 16  (0) 2020.07.19
    [CrackUs] LEVEL 15  (1) 2020.07.18

    댓글

Designed by Tistory.