ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Challenge 27
    웹해킹/Webhacking.kr 2023. 3. 27. 22:35

    sql 인젝션 문제 admin으로 쿼리를 성공시키면된다

     

     

     

     

    맨 첫번째 부터 #, select, 괄호(, limit, 공백, 0x 를 필터링 한다(맞는지는 나도 모름)

     

    밑에는 쿼리를 해주는데 주의할점은 입력창에 쓴값은 id가 아니라 뒤에 no값으로 들어간다는 점 앞의 쿼리가 실패하면 뒤의 쿼리 에러문이 출력된다

     

    admin의 no는 2라고 알려줌

     

     

    1을쳐봣더니

     

    guest 가 나왔다

     

    그럼 이제 admin으로 쿼리를 성공시켜야하는데

     

    쿼리문이

     

    select id from chall27 where id='guest' and select id from chall27 where id='guest' and no=({$_GET['no']}) 

     

    이렇게 있다. 자세히보면 no를 넣는 부분을보면 괄호로 쌓여있다

     

    예를들어서 no에 1을 넣으면 no=(1) 이렇게 값이 들어간다는 것이다

     

    그럼 우리가 admin의 id가 조회되도록 하는 방법은 뭘까 우린 이미 admin 의 no를 알고있다

     

    no가 2인 id를 조회하게하면 된다는 것이다

     

     where id='guest' and no=({$_GET['no']}) 에서 no값을 넣는 부분에

     

    아무값) or no = 2-- 이렇게 값을 넣어주면

     

    select id from chall27 where id='guest' and no=(2) or no = 2-- 이런식으로 된다

     

    이렇게되면 앞의 게스트(no=1)를 찾는 조건이 거짓이여도 or 뒤의 no=2를찾는 조건이 참이 되어 쿼리가 수행된다

     

    그런데 위에 필터링을 보면 공백과 =를 필터링 한다고했다

    ) <<- 이건필터링안함

     

    공백필터링 국룰 %09 와 = 필터링 like를 써주면

     

    2)%09or%09no%09like%092--%09 이런식으로 된다 맨앞의 2에는 아무런값이나 넣어도된다 주의할 점으로는 -- 뒤에는 공백이있어야 정상적으로 주석이 처리된다 그냥 --만 넣으면 원래쿼리문에 있던 )때문에 주석처리가안된다

     

    정리: 처음에 유니온도 찾아보고 select limit의 여러 필터링 우회 방법을 찾았었는데 그게아니었다 ㅅㅂ

    '웹해킹 > Webhacking.kr' 카테고리의 다른 글

    Challenge 58  (0) 2023.04.06
    Challenge 32  (0) 2023.04.06
    Challenge 11  (0) 2023.04.05
    Challenge 23  (0) 2023.04.03
    Challenge 5  (0) 2023.03.31
Designed by Tistory.