ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CrackUs] LEVEL 19
    [+] Security [+]/CrackUs 2020. 7. 20. 22:46

    19번 문제!

    더보기

     

     

    이번 문제는 쿼리로 no를 입력받는 문제다.

     

     

    play_sql19번 테이블은 계정이 1번부터 30번까지 총 30개 있는듯 하다.

     

    if( '인젝션 쿼리' , no=1,1) 로 Blind SQL Injeciton 을 수행할 수 있을 듯 하다.

     

    테이블에 pw길이가 9 인 계정이 있음은 자명하다.

     

    다만... 그게 어떤 계정인지 불확실 하다. 아마 lengh(pw)가 9인 계정을 여러개 파놓을 수도 있다.

     

    선배님께서 말씀하신 함정이 이게 아닐까 싶다.

     

     

    그렇다면 length(pw)가 9 인 계정을 정확히 짚고 Blind SQL Injection을 가할 필요가 있다.

     

    이로서 no = 1 의 length(pw)가 9 임을 정확히 알았다.

     

    이제는 이전까지 해왔던 방법과 동일하다.

     

    가즈아!

    하지만 길이가 8이다.

     

    한번 확인해 보았는데 5번째 문자를 찾지 못하였다.

     

    999번까지 조회해 봤지만 찾지 못하였다.

     

     

    으음?

     

    생각보다 별거 아니었다.

     

    혹시 유니코드가 아닐까? 하는 생각까지 했다.

     

    의도된 함정도 아닌 것 같은데 스스로 어렵게 돌아가려 했나보다.

     

    문제 해결!!

     

    ??????

     

    ㅋㅋ....

    no = 1 의 비밀번호를 찾아서 뭐하나... admin의 비밀번호를 찾아야한다.

     

    대충 방향이 보이니까 잘 살펴보지도 마구잡이로 뛰어왔더니 이상한 곳으로 와버렸다.

     

    으.. 너무 삽질이 길었다.

     

     

     

     

     

     

    ### 2020.07.21 추가

     

    문제가 일부 수정되었다.

     

     

    or 와 ||를 막아놓아 no를 무시하고 쿼리를 생성할 수 없다.

     

    no를 포함하여 문제를 해결해야하는 형태로 변했다.

     

     

    우선 admin의 no를 찾는다

    no는 30!

     

    이후는 동일하다. Blind SQL Injection으로 해결한다.

    비밀번호 길이는 11
    핵사를 이용하여 찾았다. 굳이 헥사가 아니어도 좋다!

     

    위와 상동

     

     

    재미있는 문제다.

     

    일단 페이지에 들어가면 get 방식으로 이미 쿼리가 넘어가 있다.

     

    id=id=Z3Vlc3Q=

     

    filter : XywgcHJvY2VkdXJlLCBzZWxlY3QsIHVuaW9u

     

    이를 보아 base64 인코딩된 텍스트가 아닐까 싶다.

     

    역시

     

     

    즉 쿼리를 base64로 인코딩하여 Injection을 가하면 된다.

     

     

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

    [CrackUs] LEVEL 20  (0) 2020.07.21
    [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.